元组
-
元组的应用场景
-
定义元组
-
元组常见操作
1 元组的应用场景
思考: 如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?
答: 列表? 列表可以一次性存储多个数据,但是列表中的数据允许更改。
num_list = [10,20,30]
# 这里将下标为 0 的数据修改为 100
num_list[0] = 100
注意:
一个元组可以存储多个数据,元组内的数据是不能修改的。
2 元组的定义
元组特点:定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型。
# 定义 t1 为多个数据元组
t1 = (10,20,30)
print(t1)
# 定义 t2 为单个数据元组
t2 = (101,)
print(t2)
# 通过 type 函数获取 t1、t2 数据类型
print(type(t1))
print(type(t2))
[15:03:15 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
(10, 20, 30)
(101,)
<class 'tuple'> # 类型为 tuple 元组类型
<class 'tuple'>
注意:如果定义的元组只有一个数据,那么这个数据后面也添加逗号,否则数据类型为唯一的这个数据的数据类型,如下示例
# 定义元组
t2 = (1,)
print(type(t2))
# 由于没有添加逗号输出为 int
t3 = (1)
print(type(t3))
# 由于没有添加逗号输出为 str
t4 = ('hello')
print(type(t4))
# 输出
[14:58:26 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
<class 'tuple'>
<class 'int'>
<class 'str'>
3 元组的常见操作
元组数据不支持修改,只支持查找,具体如下:
- 按下标查找数据
tuple1 = ('aa','bb','cc','dd')
# 可以看到查询操作和列表相同,通过下标获取
print(tuple1[0])
[15:04:51 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
aa
- index(): 查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的 index 方法相同。
tuple1 = ('aa','bb','cc','dd')
# 下标为 0
print(tuple1.index('aa'))
# 下标为 2
print(tuple1.index('cc'))
[15:11:14 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
0
2
- count(): 统计某个数据在当前元组出现的次数
tuple1 = ('aa','bb','cc','dd','cc')
# 出现 1 次
print(tuple1.count('aa'))
# 出现 2 次
print(tuple1.count('cc'))
[15:11:31 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
1
2
- 统计元组中数据的个数。
tuple1 = ('aa','bb','cc','dd','cc')
# 5 个元素个数
print(len(tuple1))
[15:12:33 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
5
4 元组数据的修改
我们在工作中遇到不能修改的数据直接放入到元组中即可,因为元组的数据本身就不支持修改,如有修改操作 py 会就提示报错
tuple1 = ('aa','bb','cc','dd')
print(tuple1)
# 将下标为 0 的数据修改为 aaa
tuple1[0] = 'aaa'
print(tuple1)
# 直接报错 'tuple' object does not support item assignment
[15:13:51 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
('aa', 'bb', 'cc', 'dd')
Traceback (most recent call last):
File "/root/py-demo/day-1/test.py", line 5, in <module>
tuple1[0] = 'aaa'
TypeError: 'tuple' object does not support item assignment
但是如果在元组中嵌套了可修改数据,那么该数据就变成了可以修改
t2 = ('aa','bb','cc','dd',['1','bb'])
# 输出元组下标为 4 的数据
print(t2[4])
# 输出元组下标为 4 ,因为下标 4 的数据为一个列表然后取出列表中下标为 1 的数据也就是 bb
print(t2[4][1])
# 将 t2 元组下标为 4 列表中下标为 1 的数据改为 22
t2[4][1] = '22'
print(t2)
# 可看到下标为 4 的数据改为了 22
[15:21:50 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['1', 'bb']
bb
('aa', 'bb', 'cc', 'dd', ['1', '22'])
注意:
在工作中单反数据是在元组里面,我们尽量不做修改
5 总结
定义元组:
t1 = (10,20,30)
t2 = (10,)
- 常用操作方法
- index()
- len()