标准库中的生成器函数——用于合并的生成器函数

 

 

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

 

posted @ 2023-05-20 18:08  limalove  阅读(11)  评论(0)    收藏  举报