- tuple:是另一种有序的列表,中文翻译为“元组”。tuple和list非常类似,但是tuple一旦创建完毕,就不能修改了。
Python之创建tuple:
创建tuple和创建list唯一不同之处就是用()替代了[ ] 。如下代码所示创建一个tuple:
t = ('Adam','Lisa','Bart')
访问方法与前文提到的list相同,只是tuple不支持append()、insert()、pop()方法。
Python之创建单元素tuple:
如果按照我们直接的思路,创建单元素tuple的代码如下:
t= (1)
print t
这时候输出:
问题来了,输出的根本就不是tuple,而是整数1。这是因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果(1)被Python解释器计算出结果1,导致得到的不是tuple,而是整数1。
为了避免歧义,单元素tuple中要多加一个逗号“,”:
t=(1,)
print t
此时输出的就是单个元素的tuple:
tuple之“可变”的tuple:
前面我们看到了tuple一旦创建就不能修改,但是若为这样的情况,就变成了一个可变的tuple
t = ('a','b',['A','B'])
注意到t有三个元素:‘a’,‘b’和一个list :[‘A’,‘B’] 。list作为一个整体是tuple的第3个元素。list对象可以通过t [2]拿到:L=t[2]。然后,我们把list的两个元素改一改:
t= ('a','b',['A','B'])
L=t[2]
L[0]='X'
L[1]='Y'
print t
重新运行,与之前的结果对比:
tuple的内容看起来好像改变了。但是,其实改变的不是tuple的元素,而是list的元素。如下图为改变前的指向:
如下图为改变后的指向:
tuple一开始指向的list并没有改成别的list。所以,list所谓的“不变”是说,tuple的每个元素,指向永远不变。指向一个list,就不能指向其他对象,但指向的这个list本身是可变的!