[英]How to make itertools combinations faster in python?
我嘗試了很多東西,但仍然不知道為什么它不能快速工作。 我該如何解決? 這是一個 CodeWars 6 kyu 任務:
給定一組元素(整數或字符串字符,僅在 RISC-V 中為字符),其中任何元素可能出現多次,返回不包含重復元素的子集數。
import itertools
def est_subsets(a):
counter = 0
a = list(set(a))
p = itertools.chain.from_iterable(itertools.combinations(a, r)for r in range(1, len(a) + 1))
for b in p:
counter += 1
return counter
itertools.combinations
需要生成所有值。 但是您可以只計算將直接生成的值的數量,而不是根本生成它們。 只需使用math.comb
(在 3.8 中添加),選擇輸入的長度,您將在很短的時間內獲得相同的結果。
請查看手冊: https://docs.python.org/3/library/itertools.html#itertools.combinations
返回的項目數為 n。 /r! /(天然橡膠)! 當 0 <= r <= n 或當 r > n 時為零。
這意味着您可以計算它應該返回的數量或項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.