标准库中的生成器函数——用于合并的生成器函数
1
1 import itertools 2 3 4 b = list(itertools.chain('ABC', range(2), [55,434,665,86])) 5 print('b:', b) # ['A', 'B', 'C', 0, 1, 55, 434, 665, 86] 6 7 b1 = list(enumerate("ABC")) 8 print('b1:',b1) # [(0, 'A'), (1, 'B'), (2, 'C')] 9 10 b2 = list(itertools.chain(enumerate("ABC"))) 11 print("b2:", b2) # [(0, 'A'), (1, 'B'), (2, 'C')] 12 13 b3 = list(itertools.chain.from_iterable(enumerate('ABC'))) 14 print('b3:', b3) #[0, 'A', 1, 'B', 2, 'C'] 15 16 17 b4 = list(zip('ABC', range(5))) 18 print('b4:', b4) # [('A', 0), ('B', 1), ('C', 2)] 19 20 21 b5 = list(itertools.zip_longest('ABC', range(5))) 22 print('b5:', b5) #[('A', 0), ('B', 1), ('C', 2), (None, 3), (None, 4)] 23 24 25 b6 = list(itertools.zip_longest('ABC', range(5), fillvalue = '?')) 26 print('b6:', b6) #[('A', 0), ('B', 1), ('C', 2), ('?', 3), ('?', 4)]
1
演示itertools.product生成器函数:计算笛卡尔积的惰性方式
1 #演示itertools.product生成器函数:计算笛卡尔积的惰性方式 2 import itertools 3 4 5 6 c = list(itertools.product('ABC', range(2))) 7 print('c:', c) 8 # [('A', 0), ('A', 1), ('B', 0), ('B', 1), ('C', 0), ('C', 1)] 9 10 11 12 suits = 'spades hearts diamonds clubs'.split() # ['spades', 'hearts', 'diamonds', 'clubs'] 13 c1 = list(itertools.product('AK', suits)) 14 print('c1:', c1) 15 #返回结果: 16 # [('A', 'spades'), ('A', 'hearts'), ('A', 'diamonds'), ('A', 'clubs'), 17 # ('K', 'spades'), ('K', 'hearts'), ('K', 'diamonds'), ('K', 'clubs')] 18 19 20 c2 = list(itertools.product('ABC')) 21 print('c2:', c2) 22 # [('A',), ('B',), ('C',)] #元组中只有一个元素时,括号中要加上逗号 23 24 25 c3 = list(itertools.product('ABC', repeat=2)) 26 print('c3:', c3) 27 # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), 28 # ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')] 29 30 #和c3的效果一样 31 c31 = list(itertools.product('ABC', 'ABC')) 32 print('c31:', c31) 33 # [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')] 34 35 36 c4 = list(itertools.product(range(2), repeat=3)) 37 print('c4:', c4) 38 # [(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)] 39 40 41 rows = itertools.product('AB', range(2), repeat=2) 42 for row in rows: print(row) 43 # ... 44 # ('A', 0, 'A', 0) 45 # ('A', 0, 'A', 1) 46 # ('A', 0, 'B', 0) 47 # ('A', 0, 'B', 1) 48 # ('A', 1, 'A', 0) 49 # ('A', 1, 'A', 1) 50 # ('A', 1, 'B', 0) 51 # ('A', 1, 'B', 1) 52 # ('B', 0, 'A', 0) 53 # ('B', 0, 'A', 1) 54 # ('B', 0, 'B', 0) 55 # ('B', 0, 'B', 1) 56 # ('B', 1, 'A', 0) 57 # ('B', 1, 'A', 1) 58 # ('B', 1, 'B', 0) 59 # ('B', 1, 'B', 1)
1