定义元组
元组同列表一样,都是可以封装多个、不同类型的元素在内。
但最大的不同点在于:
元组一旦定义完成,就不可修改
元组定义:定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型。
元组也支持嵌套:
t1=(1,"hello",False) print(t1) print(type(t1)) t11="a",1,True print(t11) print(type(t11)) t2=((1,2,3),[4,5,6]) print(t2[0][-1]) print(t2[1][0])
(1, 'hello', False)
<class 'tuple'>
('a', 1, True)
<class 'tuple'>
3
4
注意:元组只有一个数据,这个数据后面要添加逗号
t1=("hello",) t2=("hello") print(t1) print(type(t1)) print(t2) print(type(t2))
('hello',)
<class 'tuple'>
hello
<class 'str'>
否则类型为字符串,而不是元组
元组的相关操作
除了不可修改,元组与列表的操作几乎一模一样
修改元组
元组中的元素值是 不允许修改 的,但我们可以对元组进行连接组合,如下实例:
my_tuple1=("hello",[1,2,3]) my_tuple2=(True,666) t=my_tuple1+my_tuple2 print(t)
('hello', [1, 2, 3], True, 666)
值得注意的是 :
不可以修改元组的内容,否则会直接报错
my_tuple=("hello",[1,2,3]) my_tuple[1]=[4,5,6]
但可以修改元组内的list的内容(修改元素、增加、删除、反转等)
my_tuple=("hello",[1,2,3]) #my_tuple[1]=[4,5,6] my_tuple[1][0]=True print(my_tuple)
('hello', [True, 2, 3])
甚至可以提出来修改
my_tuple1=("hello",[1,2,3]) list_1=my_tuple1[1] list_1[0]=666 print(my_tuple1)
('hello', [666, 2, 3])
元组的删除
不可用pop,只能用del全删
my_tuple1=("hello",[1,2,3]) #tmp=my_tuple1.pop(0) del my_tuple1 print(my_tuple1)
报错:因为已经将my_tuple1连同名字都删了
Traceback (most recent call last):
File "C:\顺序.py\y.py", line 5, in <module>
print(my_tuple1)
NameError: name 'my_tuple1' is not defined
转换为元组tuple
my_list = [1, 2, 3, 4, 5] my_tuple = (1, 2, 3, 4, 5) my_str = "abcdefg" my_set = {1, 2, 3, 4, 5} my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4, "key5": 5} # 类型转换: 容器转元组 print(f"列表转元组的结果是:{tuple(my_list)}") print(f"元组转元组的结果是:{tuple(my_tuple)}") print(f"字符串转元组结果是:{tuple(my_str)}") print(f"集合转元组的结果是:{tuple(my_set)}") print(f"字典转元组的结果是:{tuple(my_dict)}")
列表转元组的结果是:(1, 2, 3, 4, 5)
元组转元组的结果是:(1, 2, 3, 4, 5)
字符串转元组结果是:('a', 'b', 'c', 'd', 'e', 'f', 'g')
集合转元组的结果是:(1, 2, 3, 4, 5)
字典转元组的结果是:('key1', 'key2', 'key3', 'key4', 'key5')
总结:
经过上述对元组的学习,可以总结出列表有如下特点:
- 可以容纳多个数据
- 可以容纳不同类型的数据(混装)
- 数据是有序存储的(下标索引)
- 允许重复数据存在
- 不可以修改(增加或删除元素等)
- 支持for循环
多数特性和list一致,不同点在于不可修改的特性。