用法:
itertools.combinations_with_replacement(iterable, r)
從輸入
iterable
返回r
元素的長度子序列,允許單個元素重複多次。根據輸入
iterable
的順序以字典順序發出組合元組。因此,如果輸入iterable
已排序,則組合元組將按排序順序生成。元素根據它們的位置而不是它們的值被視為唯一的。因此,如果輸入元素是唯一的,則生成的組合也將是唯一的。
大致相當於:
def combinations_with_replacement(iterable, r): # combinations_with_replacement('ABC', 2) --> AA AB AC BB BC CC pool = tuple(iterable) n = len(pool) if not n and r: return indices = [0] * r yield tuple(pool[i] for i in indices) while True: for i in reversed(range(r)): if indices[i] != n - 1: break else: return indices[i:] = [indices[i] + 1] * (r - i) yield tuple(pool[i] for i in indices)
combinations_with_replacement()
的代碼也可以表示為product()
在過濾元素未按排序順序(根據它們在輸入池中的位置)的條目後的子序列:def combinations_with_replacement(iterable, r): pool = tuple(iterable) n = len(pool) for indices in product(range(n), repeat=r): if sorted(indices) == list(indices): yield tuple(pool[i] for i in indices)
返回的項目數是
(n+r-1)! / r! / (n-1)!
當n > 0
。3.1 版中的新函數。
相關用法
- Python itertools.combinations用法及代碼示例
- Python itertools.compress用法及代碼示例
- Python itertools.count用法及代碼示例
- Python itertools.chain.from_iterable用法及代碼示例
- Python itertools.chain用法及代碼示例
- Python itertools.cycle用法及代碼示例
- Python itertools.takewhile用法及代碼示例
- Python itertools.dropwhile用法及代碼示例
- Python itertools.repeat用法及代碼示例
- Python itertools.groupby()用法及代碼示例
- Python itertools.repeat()用法及代碼示例
- Python itertools.starmap用法及代碼示例
- Python itertools.filterfalse用法及代碼示例
- Python itertools.groupby用法及代碼示例
- Python itertools.zip_longest用法及代碼示例
- Python itertools.accumulate用法及代碼示例
- Python itertools.tee用法及代碼示例
- Python itertools.permutations用法及代碼示例
- Python itertools.product用法及代碼示例
- Python itertools.islice用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 itertools.combinations_with_replacement。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。