目录
1. 元组概述
一种有序的集合,和列表非常的相似,列表使用[]表示,元组使用()表示;
元组既能像列表那样同时容纳多种类型的对象,也拥有字符串不可变的特性。
2. 元组和列表的不同点
- 列表是使用方括号,元组则是圆括号(也可以不带圆括号)
- 列表中的元素可以被修改,而元组不行
- 列表中涉及到修改元素的方法元组均不支持
- 列表的推导式叫列表推导式,元组的 “推导式” 叫生成器表达式
#元组赋值可以使用(),也可以不用
s = (2,'7',11.5453)
s
(2, '7', 11.5453)
s = 1,2,3.0,'4','五','six'
s
(1, 2, 3.0, '4', '五', 'six')
#元组可以通过下标获取单个元素
s[0]
1
s[5]
'six'
#元组元素不可以修改
s[1] = 2
Traceback (most recent call last):
File "D:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 3331, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-6-f2266874e093>", line 1, in <module>
s[1] = 2
TypeError: 'tuple' object does not support item assignment
#元组整体可以修改
s1 = (1,2,3)
s1
(1,2,3)
s1 = (2,3,4)
s1
(2, 3, 4)
3. 元组和列表的共同点
- 都可以通过下标获取元素
- 都支持切片操作
- 都支持 count() 方法和 index() 方法
- 都支持拼接(+)和重复(*)运算符
- 都支持嵌套
- 都支持迭代
4. 怎样修改元组
元组中的元素虽然是不可变的,但如果元组中的元素是指向一个可变的列表,那么我们依然是可以修改列表中的内容的。
如下示例:
s = ([1,2,3],[4,5,6])
s[1][1] = 0
s
Out[31]: ([1, 2, 3], [4, 0, 6])
5. 单元素元组
单元素元组必须带“,”否则不成立
#不带,的单元素元组,判断为整型
s = (123)
type(s)
Out[71]: int
s
Out[72]: 123
#带,的单元素元组,判断为元组
s = (123,)
type(s)
Out[74]: tuple
s
Out[75]: (123,)
6. 元组切片
元组支持切片操作,效果和列表一致,参见:列表切片
但不能对切片做赋值,只能查询。
s = 0,1,2,3,4,5,6,7,8,9
s
Out[13]: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
#做元组s的元素0到2-1切片
s[:2]
Out[15]: (0, 1)
#做元组s的元素3到7-1切片
s[3:7]
Out[16]: (3, 4, 5, 6)
#做元组s的元素1到6-1间隔为3切片
s[1:6:3]
Out[17]: (1, 4)
s[:]
Out[18]: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)