
上QQ阅读APP看书,第一时间看更新
2.2.1 元组的操作
看起来,元组和列表的区别就是元组用圆括号,列表用方括号。但是其实它们有本质的差异:元组一旦定义完成,就不能再更改了。
“这是真的吗?”格兰特蕾妮有点半信半疑,“那就是说列表中那些凡是会更改列表或元素的操作,对元组都是无效的吗?”说着,她输入以下代码,想看个究竟:
>>> congming ('聪明药丸', 20, 'GA97星球') >>> congming[1]=30 #试图改变元组元素 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> congming[1]=30 #试图改变元组元素 TypeError: 'tuple' object does not support item assignment
格兰特蕾妮试图改变congming这个元组中的元素,结果IDLE告诉她:“元组(tuple)不支持给元素赋值。”她又尝试给元组增加一个元素:
>>> congming.append('说明: 可以让人更聪明') #试图增加元组元素 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> congming.append('说明: 可以让人更聪明') #试图增加元组元素 AttributeError: 'tuple' object has no attribute 'append'
结果IDLE又告诉她:“元组没有append方法。”格兰特蕾妮又尝试清空一个元组:
>>> congming.clear() Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> congming.clear() AttributeError: 'tuple' object has no attribute 'clear'
毫无疑问也报错。
“看来元组确实是无法改变的。”这下格兰特蕾妮终于服了,不过她又问,“那么那些不改变列表的功能,元组就会有吗?”
“你说得对!确实是这样!”西西船长回答道。格兰特蕾妮又输入以下代码:
>>> (1,2,3)+(4,5,6) (1, 2, 3, 4, 5, 6) >>> (1,2,3)*3 (1, 2, 3, 1, 2, 3, 1, 2, 3) >>> x=(1,2,3)*3 >>> x.count(2) 3 >>> congming.index(20) 1
两个元组“相加”会组成一个更长的元组,而原来的元组都不会改变。元组“乘以”一个整数n,会产生一个重复n次的新元组,而原来的元组不会改变。使用“count(元素)”可以计算该元素在元组中的个数。使用“index(元素)”可以查出该元素在元组中的第一个下标。