元组
概念:
元组是一个有序,可重复,并不能修改元素值的序列
特点:
- 与list相似,可存储不同数据类型的数据
- 不可变数据类型
- 定义:(1, 2, 3, ),在后面加上一个
元组的定义:
tup = (1,2,3,4,5)
tup2 = 1,2,3
type(tup2)
>>> type(tup2)
<class 'tuple'>
tup = (1,2,"小龙女",3,"林青霞",)
print(tup)
(1, 2, '小龙女', 3, '林青霞',)
tup[0] = 1 # 元素值不能修改
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
------------------------------------
>>> tup = (1,2) #类型
>>> type(tup)
<class 'tuple'>
>>> tup = (1) # 一个元素不加',' 就不是元组
>>> type(tup)
<class 'int'>
>>> tup = (1,) #加了 ',' 即是元组
>>> type(tup)
<class 'tuple'>
如果元组中有类似于列表可变序列的数据,只能修改可变序列【列表】的元素值,不违背元组的说法。
>>> tup = (1,2,3,["张三", "李四", "万物"], {"name":"杨贵妃","age" :"95"})
>>> tup
(1, 2, 3, ['张三', '李四', '万物'], {'name': '杨贵妃', 'age': '95'})
>>> type(tup)
<class 'tuple'>
>>> tup[0] # 索引查找元素
1
>>> tup[1]
2
>>> tup[3] # 元素为列表
['张三', '李四', '万物']
>>> tup[3][0] # 利用[索引][子索引]的方式获取值
'张三'
>>> tup[3][2] = "赵柳" #修改元组中列表的值
>>> tup[3][2] # 发现是可以修改子列表的数值,但是不能修改元组本身的值
'赵柳'
>>> print(tup)
(1, 2, 3, ['张三', '李四', '赵柳'], {'name': '杨贵妃', 'age': '95'})
删除元组
- del 元组
tup = (1,2,3,)
print(tup)
(1,2,3,)
del tup
print(tup) # 删除后就不能输出了
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'tup' is not defined
元组运算符
| Python表达式 | 结果 | 描述 |
|---|---|---|
| len((1,2,3,4,5)) | 5 | 计算元组的长度 |
| (1,2,3,) + (11,22,33,) | (1,2,3,11,22,33) | 元组拼接成新的元组 |
| (1,2,3,)* 2 | (1,2,3,1,2,3) | 复制元组输出 |
| 2 in (1,2,3,) | True | 判断元素2是否存在元组中 |
| tup[0] | 1 | 输出元组中指定索引的元素 |
遍历
-
枚举遍历index,value
enumerate将其组成一个索引序列,利用它可以同时获得索引和值
tup = (12, 33, 45, 2, 3, 66) >>> for index, value in enumerate(tup): ... print(index, ": ", value) ... 0 : 12 1 : 33 2 : 45 3 : 2 4 : 3 5 : 66 -
迭代输出元组中的每一个元素
>>> for i in tup:
... print(i, end = " ")
...
1 2 3 ['张三', '李四', '赵柳'] {'name': '杨贵妃', 'age': '95'} >>>
- 通过索引迭代
>>> for i in range(len(tup)):
... print(tup[i])
...
1
2
3
['张三', '李四', '赵柳']
{'name': '杨贵妃', 'age': '95'}
二维元组
>>> tuple = ((1,2,3,4,5), ("张三","郭靖","王五","汛期","王泽"))
>>> for i in tuple:
... for j in range(len(i)):
... print(i[j], end = " ")
... print()
...
1 2 3 4 5
张三 郭靖 王五 汛期 王泽
三维元组
>>> tuple2 = (("湖南",("长沙", "衡阳", "娄底", "株洲")),("广东", ("东莞", "珠海", "深圳")))
>>> for i in tuple2:
... print(i[0])
... for j in i[1]:
... print(j, end = " ")
... print()
...
湖南
长沙 衡阳 娄底 株洲
广东
东莞 珠海 深圳
内置函数
-
max(tuple);获取元组中的最大值
tup = (12,33,45,2,3,66) max(tup) 66 -
min(tuple);获取元组中的最小值
tup = (12,33,45,2,3,66) min(tup) 2 -
tuple(list);将列表转化为元组
>>> tuple([1,222,131,41,4,1,]) (1, 222, 131, 41, 4, 1)