簡體   English   中英

如何在 python 中使 itertools 組合更快?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM