1 tuple
一种有序列表叫元组:tuple。tuple和lis非常相似,但是tuple一旦初始化就不能修改。
eg:列出班里所有同学的名字
- list: classmates=['Michael', 'Bob', 'Tracy']
- tuple: classmates=('Michael', 'Bob', 'Tracy')
不可变的tuple的意义:代码更安全
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来:
如果要定义一个空的tuple,可以写成():
但是,要定义一个只有一个元素的tuple,如果你这么定义:
定义tuple,是1这个数! 因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义。因此python规定,这种情况下,按小括号进行计算,计算结果自然就是1.
所以在这种情况下,只有一个元素的tuple定义必须加一个,来消除歧义:
2 '可变'的tuple
当我们把list的元素'A'
和'B'
修改为'X'
和'Y'
后,tuple变为:
表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a'
,就不能改成指向'b'
,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
参考网址:https://www.liaoxuefeng.com
廖雪峰的官方网站