>>> import itertools
>>> n = itertools.count(1) #从1开始增加的迭代
>>> for i in n:
print(i)
>>> n = itertools.cycle('ABCDE') #循环cycle参数的内容
>>> for i in n:
print(i)
>>> s = itertools.repeat('hello', 4) #重复4次参数内容
>>> for i in s:
print(i)
>>> for c in itertools.chain('ABC', '123'): #返回一个迭代器,元素以单一序列的形式
print(c)
A
B
C
1
2
3
>>> for key, group in itertools.groupby('AAABB1C1CCAA'):
print(key, list(group))
#将序列就近分组,相邻的相同字符为key,几个相同字符的迭代器为group,以list形式显示(没有形同重复字符则单个字符为一组)
A ['A', 'A', 'A']
B ['B', 'B']
1 ['1']
C ['C']
1 ['1']
C ['C', 'C']
A ['A', 'A']
>>> for key, group in itertools.groupby('AaaBb1C1cCaA', lambda c:c.upper()): #参数2为可选参数,为keyfunc
print(key, list(group)) #不区分大小写,全转为大写之后比较
A ['A', 'a', 'a']
B ['B', 'b']
1 ['1']
C ['C']
1 ['1']
C ['c', 'C']
A ['a', 'A']
>>> a = (1, 2, 3)
>>> b = ('A', 'B', 'C')
>>> c = itertools.product(a, b) #几个变量就生成含几个元素的元组.... 将变量元素一一组合
>>> for i in c: #repeat可作为关键字参数,指定序列重复的次数
print(i)
(1, 'A')
(1, 'B')
(1, 'C')
(2, 'A')
(2, 'B')
(2, 'C')
(3, 'A')
(3, 'B')
(3, 'C')
>>> a = [1, 2, 3]
>>> s = [i for i in itertools.permutations(a[, r])] #返回指定长度的序列 返回列表中任意取r个元素做排列的元组的迭代器
>>> s
[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
>>> a = [1, 2, 3, 4]
>>> s_number = [i[0] * 100 + i[1] * 10 + i[2] for i in itertools.permutations(a)] #选3个元素组合成不重复的3位数
>>> s_number
[123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
- combinations(iterable, r) 组合(子序列)
>>> s = [i for i in itertools.combinations(a, 3)] #返回序列中长度为r的子序列,顺序不变,不重复
>>> s
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]