一、元组的特点
"""元组的总结:""" ''' 元组的核心特点:不可变序列 元组的访问和处理速度要比列表快 与整数和字符串一样,元组可作为字典的键,列表永远不可以作为字典的键使用 '''
二、元组的创建
2.1 普通创建
# 1. 普通创建 a1 = (10,20,30) print(type(a1)) # <class 'tuple'> print(a1) # (10, 20, 30) a2 = 10,20,30 print(type(a2)) # <class 'tuple'> print(a2) # (10, 20, 30) a3 = (20) a4 = (30,) a5 = 40, print(type(a3)) # <class 'int'> print(type(a4)) # <class 'tuple'> print(type(a5)) # <class 'tuple'>
2.2 通过tuple创建元组
# 2. 通过tuple创建元组 b1 = tuple("abcd") print(b1) # ('a', 'b', 'c', 'd') b2 = tuple(range(3)) print(b2) # (0, 1, 2) b3 = tuple([11,22,33,44]) print(b3) # (11, 22, 33, 44)
三、元组的访问
3.1 元组的访问
# 3.1 元组的访问 c1 = (20,10,30,40) # 3.1 直接访问 print(c1[1]) # 10 # 切片 print(c1[1:3]) # (10, 30) # 排序 print(c1[::-1]) # (40, 30, 10, 20) # sorted() list.sort()是修改原列表的对象,故tuple没有sort方法, # sorted(tuple)是将tuple转化成有序列表 print(sorted(c1)) # [10, 20, 30, 40]
3.2 zip()方法
# 3.2 zip() 将多个列表对应位置的元素合并成为元组,并返回给这个zip对象 x = [10,20,30,40] y = [11,22,33,44] z = [100,200,300,400] m = zip(x,y,z) print(m) print(list(m)) #输出: """ <zip object at 0x0000027B8A680108> [(10, 11, 100), (20, 22, 200), (30, 33, 300), (40, 44, 400)] """
3.3 生成器推导式创建元组
''' 3.3. 生成器推导式创建元组 生成器推导式与列表推导式类似,只是生成器推导式使用小括号, 列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组, 而是一个生成器对象,我们可以通过生成器对象,转化成为列表或元组,也可以使用生成器对象的__next__() 方法进行遍历,或者直接作为迭代器来使用,不管用什么元素,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象 ''' s = (x*2 for x in range(5)) print(s) print(tuple(s)) print(list(s)) # 元素只能访问一次,第二次访问时就为空了,需要再次生成一次 s = (x*2 for x in range(5)) print(list(s)) s1 = (x*2 for x in range(5)) print(s1.__next__()) # 0 print(s1.__next__()) # 2 print(s1.__next__()) # 4 print(s1.__next__()) # 6 print(s1.__next__()) # 8 print(s1.__next__()) # 异常 : StopIteration """ <generator object <genexpr> at 0x000001CBF27115C8> (0, 2, 4, 6, 8) [] [0, 2, 4, 6, 8] 0 2 4 6 8 """