1.操作元组
元组是不可变的序列。序列意味着它的元素是按索引位置有序的,序列的通用操作元组都可以使用,不可变序列意味着那些序列的修改行为都不能用,但是却可以使用hash()内置函数对元组进行hash。这里简单介绍一点基本操作。
元组支持+ *
符号操作:
1 >>> T = (1,2,3,4)
2 >>> T1 = ('a','b','c')
3
4 >>> T + T1
5 (1, 2, 3, 4, 'a', 'b', 'c')
6
7 >>> (1,2) + tuple("34")
8 (1, 2, '3', '4')
9
10 >>> T * 2
11 (1, 2, 3, 4, 1, 2, 3, 4)
12 >>> 2 * T
13 (1, 2, 3, 4, 1, 2, 3, 4)
我是一名python开发工程师,整理了一套python的学习资料,从基础的python脚本到web开发、爬虫、
数据分析、数据可视化、机器学习、面试真题等。想要的可以进群:688244617免费领取
可以通过+=
的方式进行二元赋值:
1 >>> T1 = (1,2,3)
2 >>> T2 = (4,5,6)
3
4 >>> T1 += T2
5 >>> T1
6 (1, 2, 3, 4, 5, 6)
元组是序列,序列类型的每个元素都是按索引位置进行存放的,所以可以通过索引的方式取得元组中的各个元素,通过切片的方式取得子元组:
1 >>> T = (1,2,3,4,5)
2 >>> T[0]
3 1
4
5 >>> T[:3]
6 (1, 2, 3)
7 >>> T[:]
8 (1, 2, 3, 4, 5)
9 >>> T[2:-1]
10 (3, 4)
但不能赋值,因为元组是不可变对象。
1 >>> T = (1,2,3,4)
2 >>> T[0] = 11
3 Traceback (most recent call last):
4 File "", line 1, in
5 TypeError: 'tuple' object does not support item assignment
因为元组是不可变对象,所以可以使用hash()进行hash:
1 >>> hash(T)
2 -1883319094
3 >>> hash((1,2,3))
4 -378539185
5 >>> hash([1,2,3])
6 Traceback (most recent call last):
7 File "", line 1, in
8 TypeError: unhashable type: 'list'
2.修改元组
因为元组是不可变对象,所以没有直接方法修改元组,只能通过其它手段根据原始元组间接地构造新元组。切片返回的元组也是一种修改方式。
另外,要修改元组,可以考虑将元组转换成可变的列表,修改之后再转换回元组。例如:
1 >>> t = ('a','b','c','d')
2 >>> tmp = list(t)
3 >>> tmp[2] = "cc"
4 >>> t = tuple(tmp)
5 >>> t
6 ('a', 'b', 'cc', 'd')
或者,通过解析的方式构造新元组,但元组解析必须注意的是元组的括号特殊性,因为它会被当作表达式的包围括号,而不是元组的构造括号。所以,只能使用tuple()包围解析表达式。
1 >>> T = (1,2,3,4,5)
2 >>> tuple( i * 2 for i in T)
3 (2, 4, 6, 8, 10)
4
5 >>> ( i * 2 for i in T) # 不是元组,而是表达式括号
6 at 0x03572150>
觉得文章还可以的话不妨点个赞,有任何意见或者看法欢迎大家评论!