itertools模块
- count函数
- circle函数
- repeat函数
- chain函数
- list函数
- dropwhile函数
- groupby函数
- islice函数
- product函数
itertools.count(start=0, step=1)
计数器count
alist = ["a", "b", "c", "d", "e"]
for i in zip(count(1), alist):
print(i)
(1, ‘a’)
(2, ‘b’)
(3, ‘c’)
(4, ‘d’)
(5, ‘e’)
itertools.cycle(iterable)
循环输出,直到你给定的停止条件
alist = ["a", "b", "c", "d", "e"]
a = 0
for item in cycle(alist):
a = a+1
if a == 12:
break
print(a, item)
2 b
3 c
4 d
5 e
6 a
7 b
8 c
9 d
10 e
11 a
itertools.repeat(object[, times])
重复生成object,可以指定次数
for i in repeat("object", 5):
print(i)
object
object
object
object
object
itertools.chain(*iterables)
将两个列表生成单一的chain
for i in chain([1, 2, 3, 4, 5], [{"a": 2}, {"f": 4}]):
print(i)
1
2
3
4
5
{‘a’: 2}
{‘f’: 4}
itertools.compress(data, selectors)
过滤list
alist = ["a", "b", "c", "d", "e"]
for i in compress(alist,[1,0,0,1,1]):
print(i)
a
d
e
9
itertools.dropwhile(predicate, iterable)
dropwhile,从头开始过滤,一旦第一个成功,输出后面所有。即在条件为false之后的第一次, 返回迭代器中剩下来的项.
for i in dropwhile(lambda x: x<5,[9,63,5,7,1,2,9]):
print(i)
9
63
5
7
1
2
9
itertools.groupby(iterable[, key])
groupby 分组,可以自定义函数,按照你函数输出结果进行分组
for i, k in groupby(['aa', 'bb', 'zxc', 'sdf', 'eeee', 'fffff'], len):
print(i, list(k))
def out_prenum(x):
return str(x)[0]
for i, k in groupby([22, 23, 24, 12, 14, 11, 56, 57], out_prenum):
print(i,list(k))
2 [‘aa’, ‘bb’]
3 [‘zxc’, ‘sdf’]
4 [‘eeee’]
5 [‘fffff’]
2 [22, 23, 24]
1 [12, 14, 11]
5 [56, 57]
itertools.islice(iterable, stop)
islice 列表的起始,结尾,步长
for i in islice([22, 23, 24, 12, 14, 11, 56, 57], 2, 6, 2):
print(i)
24
14
itertools.product(*iterables[, repeat])
product 生成序列产品
for i in product([1,2,3],[‘a’,’b’,’c’]):
print(i)
(1, ‘a’)
(1, ‘b’)
(1, ‘c’)
(2, ‘a’)
(2, ‘b’)
(2, ‘c’)
(3, ‘a’)
(3, ‘b’)
(3, ‘c’)