• count cycle repeat迭代内容
>>> 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)

 

  •  chain groupby
>>> 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']
  •  product 笛卡尔积  (组合——)
>>> 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')
  •  permutations  其中序列元素的任意组合
>>> 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)]