介绍一下Python的官方迭代库itertools中的组合迭代器(Combinatoric iterators)。
组合迭代器(Combinatoric iterators):
Iterator | Arguments | Results |
---|---|---|
product() | p, q, … [repeat=1] | cartesian product, equivalent to a nested for-loop |
permutations() | p[, r] | r-length tuples, all possible orderings, no repeated elements |
combinations() | p, r | r-length tuples, in sorted order, no repeated elements |
combinations_with_replacement() | p, r | r-length tuples, in sorted order, with repeated elements |
1.itertools.product(*iterables, repeat=1)
itertools.product()是一个产生笛卡尔积的函数,与[(x,y) for x in A for y in B]功能类似,其中repeat为做笛卡尔积的次数。
1 | list(itertools.product('ABCD', 'abc')) |
2.itertools.permutations(iterable, r=None)
返回长度为r的iterable的排列。(每一项中的元素有序)
1 | list(itertools.permutations('ABCD')) |
3.itertools.combinations(iterable, r)
返回长度为r的iterable的组合。(每一项中的元素无序,并且不重复)
1 | list(itertools.combinations('ABCD', 2)) |
4.itertools.combinations_with_replacement(iterable, r)
返回长度为r的iterable的组合。(每一项中的元素无序,并且可重复)
1 | list(itertools.combinations_with_replacement('ABCD', 2)) |
参考:
[1] itertools — Functions creating iterators for efficient looping