文章为自己的学习笔记,如有不正确的地方,还请提出指正,欢迎一起交流,学习,进步~~
元组
有三种基本序列类型:列表(list)、元组(tuple)和范围对象(range)。list和range,在之前都已经提过了,今天就来谈谈最后一个tuple。
元组简单的说就是不可修改的列表,列表的标志性符号是中括号[],而元组的标志性符号是逗号,可以通过下面的代码来进行证明。
>>> tuple1 = (1, 2, 3, 4, 5)
>>> tuple1[1]
2
>>> tuple1[3:]
(4, 5)
>>> tuple1[:]
(1, 2, 3, 4, 5)
>>> tuple2 = tuple1[:]
>>> tuple2
(1, 2, 3, 4, 5)
>>> tuple2[2] = 11
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
tuple2[2] = 11
TypeError: 'tuple' object does not support item assignment
d
>>> temp = (1)
>>> temp
1
>>> type(temp)
<class 'int'>
>>> temp2 = 2, 3, 4
>>> type(temp2)
<class 'tuple'>
>>> temp3 = ()
>>> type(temp3)
<class 'tuple'>
>>> temp4 = []
>>> type(temp4)
<class 'list'>
>>> temp5 = (1, )
>>> type(temp5)
<class 'tuple'>
>>> temp6 = 1,
>>> type(temp6)
<class 'tuple'>
>>> 8 * (8)
64
>>> 8 * (8,)
(8, 8, 8, 8, 8, 8, 8, 8)
?
元组的相关操作
#元组的更新,与字符串一样,元组不能被修改,但是可以通过切片的方式进行更新
#实际上是创建了一个新的元组,然后贴上了temp的标签,而原来temp指向的元组并没有消失,只是由于没有变量变量指向它,所以无法进行访问,过段时间Python的回收机制会将其回收。
?
#添加
>>> temp = ("Joe", "Kevin", "Jack")
>>> temp = temp[:2] + ("David") + temp[2:]
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
temp = temp[:2] + ("David") + temp[2:]
TypeError: can only concatenate tuple (not "str") to tuple
>>> temp = temp[:2] + ("David",) + temp[2:]
>>> temp
('Joe', 'Kevin', 'David', 'Jack')
?
#删除
>>> del temp
>>> del
SyntaxError: invalid syntax
注意:在代码11行处,圆括号和逗号都是必要要加的,少了一个都会报错,代码中演示了少了逗号的效果,去掉括号同样会报错,读者可自证。
补充
>>> t = 12345,54321,"hello!"
>>> t
(12345, 54321, 'hello!')
语句 t = 12345,54321,"hello!" 是元组包装的一个例子:值 12345、54321 和"hello!"被装在一个元组里面,当然反向操作也是可能的:
#方向操作
>>> x, y, z = t
>>> t
(12345, 54321, 'hello!')
>>> x
12345
>>> y
54321
>>> z
'hello!'
这称为序列解包,适用于右侧的任何序列。 序列解包要求等号左侧有许多变量,因为这些序列中存在元素。 请注意,多个赋值只是元组打包和序列解包的组合。
最后
下面对常见序列操作符列一个总结表