和列表类似,元组也是一种有序列表,虽然tuple和list非常之类似,但是list初始化之后使可以改变的,但是,元组一旦初始化之后就不可以改变。比如,同样的列出一组人的姓名:
现在tuple1这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用tuple1[0],tuple1[-1],但不能赋值成另外的元素。
不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:
1 >>> #定义一个空的元组
2 ...
3 >>> t = tuple()
4 >>> t
5 ()
6 >>> t = (1,2,3,1)
7 >>> t
8 (1, 2, 3, 1)
9 >>> #定义一个只有一个元素的元组,可以这样定义:
10 ...
11 >>> t1 = (123,)
12 >>> t1
13 (123,)
14 >>> #如果你这样定义你定义的将是123这个元素,而不是一个元组
15 >>>
16 >>> t2 = (123)
17 >>> t2
18 123
19 >>>
定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。
所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。
可以"改变"的tuple:
1 >>> tuple2 = ('aa','bb','cc',['a','b','c'],'dd')
2 >>> tuple2
3 ('aa', 'bb', 'cc', ['a', 'b', 'c'], 'dd')
4 >>> tuple2[3][0] = 'XX'
5 >>> tuple2[3][1] = 'YY'
6 >>> tuple2
7 ('aa', 'bb', 'cc', ['XX', 'YY', 'c'], 'dd')
8 >>> #当一个元组中有列表时是可以改变元组的值的,其实实质是改变列表的值
1.创建元组:
1 >>> tuple1 = ('wudashen','langdacheng','wangchengcheng')
2 >>> tuple2 = (1,2,3,4,5,6)
3 >>> tuple3 = "a","b","c","d"
4 >>> tuple1
5 ('wudashen', 'langdacheng', 'wangchengcheng')
6 >>> tuple2
7 (1, 2, 3, 4, 5, 6)
8 >>> tuple3
9 ('a', 'b', 'c', 'd')
10 >>>
创建一个空元组时可以直接创建一个括号,创建一个只有一个元素的元组时,必须在和面添加一个逗号(,):
>>>
>>> tuple4 = ()
>>> tuple4
()
>>> tuple5 = (1,)
>>> tuple5
(1,)
>>>
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
2.访问元组:
元组可以使用下标索引来访问元组中的值,如下实例:
1 >>> print "tuple1[0]:",tuple1[0]
2 tuple1[0]: wudashen
3 >>> print "tuple1[1:5]",tuple1[1:5]
4 tuple1[1:5] ('langdacheng', 'wangchengcheng')
5 >>> print "tuple2[1:5]",tuple2[1:5]
6 tuple2[1:5] (2, 3, 4, 5)
7 >>>
3.修改元组:
元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例:
1 >>> t1 = ('wuyanl','luoting','aimeiyu')
2 >>> t2 = (1,2,3,4,5,6,7,8,9,0)
3 >>> t1
4 ('wuyanl', 'luoting', 'aimeiyu')
5 >>> t2
6 (1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
7 >>> t3 = t1 +t2
8 >>> t3
9 ('wuyanl', 'luoting', 'aimeiyu', 1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
10 >>>
4.删除元组:
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组,如下实例:
1 >>> print t1
2 ('wuyanl', 'luoting', 'aimeiyu')
3 >>> del t1
4 >>> t1
5 Traceback (most recent call last):
6 File "<stdin>", line 1, in <module>
7 NameError: name 't1' is not defined
8 >>>
5.元组运算符:
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
6.元组索引,截取:
因为元组也是一个序列,所以我们可以访问元组中的指定位置的元素,也可以截取索引中的一段元素,如下所示:
7. 元组的内置函数:
(1),比较两个元组元素:cmp(tuple1,tuple2)
(2),计算元组的长度:len(tuple1):
(3),返回元组中的最大值:max(tuple2),min(tuple2)
(4),将列表转换成元组:
元组的知识就先介绍到这里,以下详细的来说一下重头戏--字典: