python 3.6.5
元组的特性和定义
与列表类型 只不过 [ ] 改成了()
特性:
1.不可变(元组本身不可变,但是可以存可变类型的element){猜测因为可变element的地址不可变而存在元组里面也只是地址而已:例如:list dict 等}
2.可存放多个值
3.按照从左到右的顺序定义元组元素,下表从0,开始顺序访问。有序
#解释为什么要有不可变的元组出现呢?
创建:
ages=tuple()
ages=()
ages=1, #注意以逗号隔开,默认为元组
ages=( 1 , )#注意,元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义
ages=(11,22,33,44)
ages=tuple((11,22,33,44))
tuple_list=(v for v in range(1,8))#生成器表达式
print(tuple_list,type(tuple_list))
tup=tuple(tuple_list)
print(tup,type(tup))
>>:<generator object <genexpr> at 0x0000000001EC18E0> <class ‘generator‘>
>>:(1, 2, 3, 4, 5, 6, 7) <class ‘tuple‘>
常用操作:
索引 #正向取 和 反向取 :只能取
循环 for in 可迭代循环
长度 len()
成员运算 in 和 not in
切片:顾头不顾尾,步长 ,反向步长
元组运算符 + 和 * 但是得到的是新tuple
统计个数:tuple.count(‘ 出现了几次‘)#没有返回0
返回索引:tuple.index(‘要查找的element‘) #找不到会报错
和列表 差不多 可以去看列表相关操作
或者字符串
https://www.cnblogs.com/yanxiatingyu/p/9277115.html
tup = (1, 2, [‘a‘, ‘b‘, ‘c‘], ‘d‘, ‘e‘, (‘gu‘, ‘tang‘))
print ("tup[0] =",tup[0]) # 打印索引为0的元素
#输出结果
tup[0] = 1
print ("tup[1:] =",tup[1:]) #从索引为1到最后一个元素
#输出结果
tup[1:] = (2, [‘a‘, ‘b‘, ‘c‘], ‘d‘, ‘e‘, (‘gu‘, ‘tang‘))
print ("tup[:-1] =",tup[:-1]) # 到倒第二个元素但不包含第二个
#输出结果
tup[:-1] = (1, 2, [‘a‘, ‘b‘, ‘c‘], ‘d‘, ‘e‘)
print ("tup[1::1] =",tup[1::1]) # 等价于tup[1:] 从左到右一个个去取,步长为1
#输出结果
tup[1::1] = (2, [‘a‘, ‘b‘, ‘c‘], ‘d‘, ‘e‘, (‘gu‘, ‘tang‘))
print ("tup[1::2] =",tup[1::2]) #从左到右隔一个去取 步长为2
#输出结果
tup[1::2] = (2, ‘d‘, (‘gu‘, ‘tang‘))
print ("tup[::-1]",tup[::-1]) # 反向输出 步长为1
#输出结果
tup[::-1] ((‘gu‘, ‘tang‘), ‘e‘, ‘d‘, [‘a‘, ‘b‘, ‘c‘], 2, 1)
print ("tup[::-2]",tup[::-2]) # 反向输出 步长为2(隔一个去取))
#输出结果
tup[::-2] ((‘gu‘, ‘tang‘), ‘d‘, 2)
八、元组内置函数
Python元组包含了以下内置函数
1、cmp(tuple1, tuple2):比较两个元组元素。
2、len(tuple):计算元组元素个数。
3、max(tuple):返回元组中元素最大值。
4、min(tuple):返回元组中元素最小值。
5、tuple(seq):将列表转换为元组
关于元组不可变
lis = [1, 2, 3]
tup = (1, 2, 3, 4, lis)
print(tup)
# (1, 2, 3, 4, [1, 2, 3])
tup[4][1] = ‘元素改变了‘
print(tup)
# (1, 2, 3, 4, [1, ‘元素改变了‘, 3])
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,
指向永远不变。即指向‘a‘,就不能改成指向‘b‘,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
原文:https://www.cnblogs.com/yanxiatingyu/p/9278175.html