tuple
tuple一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改 元组看起来犹如列表,使用圆括号而不是方括号来标识. 定义元组后就可以使用索引来访问其元素,就像访问列表元素一样
- 示范
>>> classmates=('lijinghua','duanyuxi','niechongcong')
>>> classmates
('lijinghua', 'duanyuxi', 'niechongcong')
现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0], classmates[-1],但不能赋值成另外的元素。
示范(会报错)!!!!!!!!!
>>> classmates.insert(1,'liadou')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'insert'
-
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
-
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如
-
空的tuple #定义一个空的tuple,可以写成()
>>> tuple = ()
>>> tuple
()
定义一个只有1个元素的tuple
错误的示范
>>> t = (1)
>>> t
1
- 定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
- 所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义
- 正确的示范
>>> t=(1,)
>>> t
(1,)
来一个"会变的"的tuple
- 示范
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
一步一步解释(慢动作)
>>> t=('a','b',['A','B'])
>>> t[2][0]='X'
>>> t
('a', 'b', ['X', 'B'])
>>> t[2][1]='Y'
>>> t
('a', 'b', ['X', 'Y'])
- 廖大神解释 表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变
遍历元组中的所有值
像列表一样,也可以使用for循环来遍历元组中的所有值 单词 dimensions = 面积
- 示范
[root@pa1 lijinghua]#python tuple_for.py
200
50
[root@pa1 lijinghua]#cat tuple_for.py
#!/usr/bin/python
dimensions=(200,50)
for dimension in dimensions:
print(dimension)
做一个题
- 题目
>>> L = [
... ['Apple', 'Google', 'Microsoft'],
... ['Java', 'Python', 'Ruby', 'PHP'],
... ['Adam', 'Bart', 'Lisa']
... ]
分别打印出Apple,Python,Lisa
>>> L
[['Apple', 'Google', 'Microsoft'], ['Java', 'Python', 'Ruby', 'PHP'], ['Adam', 'Bart', 'Lisa']]
>>> L[0][0]
'Apple'
>>> L[1][1]
'Python'
>>> L[2][2]
'Lisa'
End
补充于2018.2.7 22:26