1 介绍
1.1 元组的核心特点是:不可变序列。
1.2 元组的访问和处理速度比列表快。
1.3 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。
2 创建
2.1 小括号()
2.1.1 小括号创建元组
a = (10,20,30)
2.1.2 小括号可以省略
a=10,20,30
print(a)
print(type(a))
"""
输出为:
(10, 20, 30)
<class 'tuple'>
"""
2.2 tuple()
注意()生成元组和tuple生成元组的区别
a = ("abc")
b = tuple("abc")
c = tuple(range(10))
d = tuple([1, 2, 3])
print(a)
print(b)
print(c)
print(d)
"""
输出为:
abc
('a', 'b', 'c')
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
(1, 2, 3)
"""
2.3 生成器推导式
2.3.1 生成器推导式创建元组
列表 推导式直接生成列表对象
t1 = [x for x in range(10)]
print(t1)
print(type(t1))
"""
输出为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
<class 'list'>
"""
生成器推导式使用 小括号 生成的不是列表也 不是元组 ,而是一个生成器对象。
t2 = (x for x in range(10))
print(t2)
print(type(t2))
t3 = tuple(t2)
print(t3)
print(type(t3))
"""
输出为:
<generator object <genexpr> at 0x0000023FF4CCF2E0>
<class 'generator'>
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
<class 'tuple'>
"""
t4 = list(t2)
print(t4)
"""
输出为:
[]
#生成器对象只能访问一次元素。第二次就为空了。需要再生成一次
"""
2.3.2 生成器对象用__next__() 遍历
t2 = (x for x in range(10))
print(t2)
print(type(t2))
print(t2.__next__())
print(t2.__next__())
print(t2.__next__())
t3 = tuple(t2)
print(t3)
"""
输出为:
<generator object <genexpr> at 0x000001C61831F2E0>
<class 'generator'>
0
1
2
(3, 4, 5, 6, 7, 8, 9)
"""
3 访问
访问元组返回的对象仍然是元组对象
a = tuple("abcde")
#索引访问
print(a[0])
#切片访问
b = a[1:3]
print(b)
print(type(b))
"""
输出为:
a
('b', 'c')
<class 'tuple'>
"""
4 排序
列表关于排序的方法 list.sorted()是修改原列表对象, 元组 没有该方法。如果要对元组排序,只能使用内置函数sorted(tupleObj),并生成新的列表对象
a = tuple("abcde")
b = sorted(a)
print(b)
print(type(b))
"""
输出为:
['a', 'b', 'c', 'd', 'e']
<class 'list'>
"""
5 zip
a = [10, 20, 30]
b = [40, 50, 60]
c = [70, 80, 90]
d = zip(a, b, c)
print(d)
print(type(d))
print(list(d))
"""
输出为:
<zip object at 0x0000022B3756C200>
<class 'zip'>
[(10, 40, 70), (20, 50, 80), (30, 60, 90)]
"""