您的位置:首页 > 编程语言 > Python开发

python基本 tuple

2015-12-05 11:44 567 查看
From: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819318453af120e8751ea4d2696d8a1ffa5ffdfd7000

tuple和list非常类似,但是tuple一旦初始化就不能修改,没有append()

不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:
>>> t = (1, 2)
>>> t
(1, 2)


如果要定义一个空的tuple,可以写成
()

>>> t = ()
>>> t
()


但是,要定义一个只有1个元素的tuple,如果你这么定义:
>>> t = (1)
>>> t
1


定义的不是tuple,是
1
这个数!这是因为括号
()
既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是
1


所以,只有1个元素的tuple定义时必须加一个逗号
,
,来消除歧义:
>>> t = (1,)
>>> t
(1,)


Python在显示只有1个元素的tuple时,也会加一个逗号
,
,以免你误解成数学计算意义上的括号。

最后来看一个“可变的”tuple:
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])


这个tuple定义的时候有3个元素,分别是
'a'
'b'
和一个list。不是说tuple一旦定义后就不可变了吗?怎么后来又变了?

表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向
'a'
,就不能改成指向
'b'
,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: