python - 在Python中计算数组幂集最快的方法是什么?

标签 python arrays string performance

给定一个数字列表,例如x = [1,2,3,4,5] 我需要计算它的幂集(该列表的所有子集的集合)。现在,我正在使用以下代码来计算幂集,但是当我有大量此类列表(例如 40K 此类数组)时,速度非常慢。所以我想知道是否有任何方法可以加快速度。

superset = [sorted(x[:i]+x[i+s:]) for i in range(len(x)) for s in range(len(x))]

我也尝试了下面的代码,但是它比上面的代码慢得多。

from itertools import chain, combinations

def powerset(x):
    xx = list(x)
    return chain.from_iterable(combinations(xx, i) for i in range(len(xx)+1))

最佳答案

您可以通过让所有子集将原始集作为列表引用并让每个子集包含一个数字(其位指示包含在该集中)来更有效地表示幂集。因此,您可以通过计算元素数量然后迭代具有那么多位的整数来枚举幂集。然而,正如评论中所指出的,幂集增长得非常快,因此,如果您可以避免计算或迭代幂集,那么如果可能的话,您应该这样做。

关于python - 在Python中计算数组幂集最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24502705/

相关文章:

java - 如何将字符串从 EditText 转换为字符数组,以允许音频实现?

python - 使用 Python 从 URL 获取子域

python - 如何 "stash"随机状态生成器状态

Python:从字典格式的文本/文件创建字典

javascript - HTML - 对象数组?

java - 如何递归一个字符串以验证它只包含第一个字符后的数字

Python数据描述符不能作为实例变量工作?

python - Python 中的连续重复

javascript - 如何对对象数组进行排序?

php - 如何在 PHP 中取消设置整个数组?