1 元组定义/截取

Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。


1.1 元组定义(小括号)

1.1.1 简单定义

简单定义
python # 空元组1 tup1 = () print(tup1) print(type(tup1)) # 空元组2 tup1 = tuple() print(tup1) print(type(tup1)) # 单元素元组1 tup2 = (1,) print(tup2) print(type(tup2)) # 单元素元组2 tup2 = 1, print(tup2) print(type(tup2)) # 单元素元组 失败案例 tup2 = (1) print(tup2) print(type(tup2)) # 多元素元组 可省括号 tup3 = 'a', 'b', 'c' print(tup3) print(type(tup3)) python # () <class 'tuple'> # () <class 'tuple'> # (1,) <class 'tuple'> # (1,) <class 'tuple'> # 1 <class 'int'> # ('a', 'b', 'c') <class 'tuple'>

1.1.2 元组推导式

元组推导式
python # 元组推导式 仅创建 生成器对象 tup = (i**2 for i in range(1,9) if i < 5) print(tup) # 打印 生成器对象 print(tuple(tup)) # 元组推导式 转为 列表 tup = (i**2 for i in range(1,9) if i < 5) print(list(tup)) print(tuple(tup)) # 元组推导式 转为 元组 tup = (i**2 for i in range(1,9) if i < 5) print(tuple(tup)) print(tuple(tup)) # 遍历 元组推导式 生成 元组 tup = (i**2 for i in range(1,9) if i < 5) for i in tup: print(i,end=' ') print(tuple(tup)) # 遍历 原生成器中元素 摧毁 tup = (i**2 for i in range(1,9) if i < 5) for i in range(1,4+1): print(tup.__next__(),end=' ') print(tuple(tup)) # 遍历后 原生成器中元素 摧毁 tup = (i**2 for i in range(1,9) if i < 5) print(tup.__next__()) print(tup.__next__()) print(tup.__next__()) print(tuple(tup)) python # <generator object <genexpr> at 0x7fca0e088200> (1, 4, 9, 16) # print(tup) 不会销毁生成器对象 # [1, 4, 9, 16] () # list(tup) 会销毁生成器对象 # (1, 4, 9, 16) () # tuple(tup) 会销毁生成器对象 # 1 4 9 16 () # 1 4 9 16 () # 1 4 9 (16,)

1.1.3 元组嵌套实现元素可替换

元组嵌套实现元素可替换
python t = ('a', 'b', ['A', 'B']) # 不变的是list的指向,变化的是list自身 t[2][0] = 'X' t[2][1] = 'Y' print(t) python # ('a', 'b', ['X', 'Y'])

1.2 元组计算

元组计算
python tup1 = 1, 2, 3 tup2 = 'a', 'b', 'c' # * 为叠加 print(tup1 * 2) # + 为直接合并 print(tup1 + tup2) # , 为空格衔接 print(tup1, tup2) # in 存在判定 print('a' in tup2) python # (1, 2, 3, 1, 2, 3) # (1, 2, 3, 'a', 'b', 'c') # (1, 2, 3) ('a', 'b', 'c') # True

1.3 元组切片(中括号)

元组切片
python tup1 = 0, 1, 2, 3, 4, 5, 6 # list1[n] # list1[索引:截点:步长] # 指定字符 print(tup1[3]) # 缺省值 print(tup1[0:len(tup1):1]) print(tup1[-len(tup1)::1]) # 顺序打印全部 print(tup1) print(tup1[:]) # 第一参数 表起点 print(tup1[4:]) print(tup1[-3:]) # 第二参数 表终点 print(tup1[:3]) print(tup1[:-4]) # 第一二参数 符号相同 print(tup1[1:4]) print(tup1[-6:-3]) # 第三参数 正负 表顺逆 print(tup1[::-1]) # 第三参数 大小 表间隔 print(tup1[::2]) print(tup1[::-2]) # 元组切片结果为元组 tup2 = tup1[1:4] print(tup2) print(type(tup2)) python # # # 3 # (0, 1, 2, 3, 4, 5, 6) (0, 1, 2, 3, 4, 5, 6) # (0, 1, 2, 3, 4, 5, 6) (0, 1, 2, 3, 4, 5, 6) # (4, 5, 6) (4, 5, 6) # (0, 1, 2) (0, 1, 2) # (1, 2, 3) (1, 2, 3) # (6, 5, 4, 3, 2, 1, 0) # (0, 2, 4, 6) (6, 4, 2, 0) # (1, 2, 3) <class 'tuple'>
plain 从后面索引: -6 -5 -4 -3 -2 -1 从前面索引: 0 1 2 3 4 5 +---+---+---+---+---+---+ ['a','b','c','d','e','f'] +---+---+---+---+---+---+ 从前面截取: : 1 2 3 4 5 : 从后面截取: : -5 -4 -3 -2 -1 :

2 元组函数


2.1 元素最值(min max)

元素最值 —- min / max
python tup1 = 'a', 'b', '1', '2' # 返回最小元素 print(min(tup1)) # 返回最大元素 print(max(tup1)) tup2 = 'a', 'b', 1, 2 # 返回最小元素 print(min(tup2)) python # 1 # b # 报错:TypeError:元组元素类型须一致

2.2 元素数量(len count)

元素数量 — len / count
python tup1 = 'a', 'b', '1', '2' # 查找所有元素数量 print(len(tup1)) # 查找某一元素数量 print(tup1.count('b')) python # 4 # 1

2.3 转换函数(tuple)

转换函数 — tuple
python # 字符串转元组 str = '[1, 2]' print(tuple(str)) # 列表转元组 list = [1, 2] print(tuple(list)) # 集合转元组 ran = range(2) print(tuple(ran)) python # ('[', '1', ',', ' ', '2', ']') # (1, 2) # (0, 1)

2.4 多序列打包解包(zip *zip)

多序列打包 — zip
python # 基本用法 a = zip([2,3], (4,5)) print(a) # zip 得到的结果为内存 print(list(a)) # 转换为列表才可以使用 # 不够一组的部分不显示 b = zip([1,2,3], (4,5)) print(list(b)) # 多个元素依旧可以执行 c = zip((1,2),(3,4),(5,6)) print(list(c)) python # 各参数对应元素组成元组,并包装. # 该做法可有效节约内存 <zip object at 0x000001EB638C8C40> [(2, 4), (3, 5)] [(1, 4), (2, 5)] [(1, 3, 5), (2, 4, 6)]
多序列解包 — *zip
python a = zip([1,2,3], [4,5,6]) print(list(a)) # a 使用后节会释放内存,无法再使用 b,c = zip(*a) print(b,c) # 正确打开方式 a = zip([1,2,3], [4,5,6]) b,c = zip(*a) print(b,c) python # 故解包前不能打印 报错:ValueError: (1, 2, 3) (4, 5, 6)

3 元组方法


3.1 查询元素(切片)

查询元素
python tup = 'a', 'b', 'c', 'd' # 查找索引处对应的元素 print(tup[1]) print(tup[-1]) # 查找第一个匹配元素索引 print(tup.index('b')) python # b d # 1

3.2 元素统计(计算)

元素统计
python tup = ['a', 'b', 'a', 'b'] # 查找所有元素数量 print(len(tup)) # 查找某个元素的数量 print(tup.count('b')) python # 4 # 2