gpt4 book ai didi

python - 获取任意长度的列表元素的所有可能 (2^N) 组合

转载 作者:太空宇宙 更新时间:2023-11-03 20:03:36 26 4
gpt4 key购买 nike

我有一个包含 15 个数字的列表。如何生成这些数字的所有 32,768 种组合(即,按原始顺序排列任意数量的元素)?

我想到循环十进制整数 1-32768 并使用每个数字的二进制表示形式作为过滤器来挑选适当的列表元素。有更好的方法吗?

<小时/>

对于特定长度的组合,请参阅Get all (n-choose-k) combinations of length n 。请在适当的情况下使用该问题来关闭重复项。

当将有关组合学的问题作为重复项结束时,确保OP真正想要什么,而不是用来描述问题的词语非常重要。对于想要笛卡尔积(参见 How to get the cartesian product of multiple lists )的人来说,询问“组合”是非常常见的。

最佳答案

This answer错过了一个方面:OP要求所有组合...而不仅仅是长度“r”的组合。

所以你要么必须遍历所有长度“L”:

import itertools

stuff = [1, 2, 3]
for L in range(len(stuff) + 1):
for subset in itertools.combinations(stuff, L):
print(subset)

或者——如果你想变得时髦(或者让那些在你之后读你代码的人动脑子)——你可以生成“combinations()”生成器链,并迭代它:

from itertools import chain, combinations
def all_subsets(ss):
return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1)))

for subset in all_subsets(stuff):
print(subset)

关于python - 获取任意长度的列表元素的所有可能 (2^N) 组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59092838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com