gpt4 book ai didi

python - 如何获得列表元素的所有可能组合?

转载 作者:IT老高 更新时间:2023-10-28 12:05:50 25 4
gpt4 key购买 nike

我有一个包含 15 个数字的列表,我需要编写一些代码来生成这些数字的所有 32,768 个组合。

我找到了some code (通过谷歌搜索)这显然是我正在寻找的,但我发现代码相当不透明并且对使用它持谨慎态度。另外,我觉得必须有一个更优雅的解决方案。

我唯一想到的就是循环遍历十进制整数 1-32768 并将它们转换为二进制,然后使用二进制表示作为过滤器来挑选合适的数字。

有人知道更好的方法吗?使用 map(),也许?

最佳答案

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 - 如何获得列表元素的所有可能组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/464864/

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