Python——— 元组

(一)初识元组tuple

Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的元素。

       因此,元组没有增加元素、修改元素、删除元素相关的方法。 我们只需学元组的创建和删除,元素的访问和计数即可。元组支持如下操作:

(二)元组的创建

        通过()创建元组。
小括号可以省略。a = (10,20,30) 或者 a = 10,20,30
        如果元组只有一个元素,则必须后面加逗号。这是因为解释 器会把(1) 解释为整数 1 (1,) 解释为元组。 如 a = 10,表示元组,而a=10,表示整数10。
 具体代码:
a = (10)
print(type(a))#<class 'int'>
a = (10,)    #或者 a = 1,
print(type(a))#<class 'tuple'>
 
  通过tuple()创建元组 tuple(可迭代的对象)
a = tuple() #创建一个空元组对象
b = tuple("abc")
c = tuple(range(3))
d = tuple([2,3,4])
总结:
  • tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。 

  •   list()可以接收元组、字符串、其他序列类型、迭代器等生成列表。

(三)元组的元素访问和计数

元组的元素不能修改

 

元组的元素访问、index()count()、切片等操作,和列表一样。
a = (20,10,30,9,8)
print(a[1])#10
print(a[1:3])#(10, 30)
print(a[:4])#(20, 10, 30, 9)
    列表关于排序的方法 list.sorted() 是修改原列表对象,元组没有该方法。如果要对元组排序,只能使用内置函数 sorted(tupleObj),并生成新的列表对象。
 
a = (20,10,30,9,8)
b = sorted(a)   #b是新对象,内容是:[8, 9,10, 20, 30]
zip
       zip( 列表 1 ,列表 2 ...) 将多个列表对应位置的元素组合成为元组, 并返回这个zip 对象。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。
a = [10,20,30]
b = [40,50,60]
c = [70,80,90,100]
d = zip(a,b,c)
print(d)   #zip object
e = list(d) #列表:[(10, 40, 70), (20, 50,80), (30, 60, 90)]
print(e)
生成器推导式创建元组
          从形式上看,生成器推导式与列表推导式类似,只是生成器推导式使用小括号。
     
         列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。
        我们可以通过生成器对象,转化成列表或者元组。也可以使用生成器对象的 __next__() 方法进行遍 历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
    生成器的使用测试
#列表推导式: [0, 2, 4, 6, 8]
#a = [x*2 for x in range(5)]
#print(a)
s = (x*2 for x in range(5))
print(s)   #<generator object <genexpr> at0x0000021C80BE2880>
b = tuple(s)
print(b)  #(0, 2, 4, 6, 8)
c = tuple(s)
print(c)  #()
s2 = (x for x in range(3))
print(s2.__next__())  #0
print(s2.__next__()) #1
print(s2.__next__())  #2
#print(s2.__next__())  #报错:
StopIteration

(四)修改元组

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,具体代码如下:

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
 
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
 
# 创建一个新的元组
tup3 = tup1 + tup2
print tup3

(五) 无关闭分隔符

任意无符号的对象,以逗号隔开,默认为元组,如下实例:

 

(六)元组运算符

与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。

Python 表达式结果描述
len((1, 2, 3))3计算元素个数
(1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)连接
('Hi!',) * 4('Hi!', 'Hi!', 'Hi!', 'Hi!')复制
3 in (1, 2, 3)True元素是否存在
for x in (1, 2, 3): print x,1 2 3迭代

(七)元组内置函数

Python元组包含了以下内置函数

 方法及描述
cmp(tuple1,tuple2)比较两个元组元素。
len(tuple)计算元组元素个数。
max(tuple)返回元组中元素最大值。
min(tuple)返回元组中元素最小值。
tuple()tuple(seq)
将列表转换为元组。
元组的核心特点是:不可变序列。
2 元组的访问和处理速度比列表快。
3 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。
Python中,可以使用多种方法来合并元组。以下是两种常见的方法: 方法一:使用加号运算符(+)将需要合并的元组直接相加。这种方法会创建一个新的元组,而不会修改任何一个原始元组。例如: ``` a = (1,) b = (2,) c = a + b print(c) # 输出:(1, 2) ``` 方法二:使用元组的内置方法__add__(),将需要合并的元组作为参数传递给该方法。如果需要合并多个元组,可以使用列表或元组将它们打包起来,然后通过for循环来迭代添加。例如: ``` lst = [(1,), (2, 3), (5, 6)] result = tuple() for i in lst: result = result.__add__(i) print(result) # 输出:(1, 2, 3, 5, 6) ``` 以上是两种常见的合并元组的方法。无论使用哪种方法,都可以实现元组的合并操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python元组合并成一个的两种方法](https://blog.csdn.net/weixin_47378963/article/details/130334305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python程序基础:列表和元组.pptx](https://download.csdn.net/download/u011062044/85560904)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python温习(六)——元组操作](https://blog.csdn.net/tandelin/article/details/103591158)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘 关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值