gpt4 book ai didi

python - 生成列表的所有有序组合,其中每个组合包括所有项目

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:45 27 4
gpt4 key购买 nike

生成列表所有组合的最佳方法是什么,其中每个组合都包含列表中的每个项目,并且您可以在其中组合其他项目。

例如,对于列表['a','b','c'],我喜欢生成:

['a','b','c']
['ab','c']
['a','bc']
['abc']

我发现它有点类似于:Python: Generating all ordered combinations of a list .但是这个只关心切片。我想要从列表中获取每个项目的所有组合。 itertools 是否有可用于生成答案的内置函数?

列表也可以是数字,可以有重复的值。例如:[1,2,1] 应该生成:

[1,2,1]
[12,1]
[1,21]
[121]

我可以尝试使用链接中的代码,但我不会生成项目组合,而是根据列表的索引生成组合。我采用所有以 0 开头的组合,然后查找下一个项目并查找以该项目开头的所有组合,依此类推。不过,我认为这样做效率不高。

最佳答案

您可以将字符串中的两个相邻字符视为“分隔”或“连接”。使用 itertools.product(),您可以生成两个字符之间分隔/连接的所有组合,然后使用一个简单的函数从该信息生成字符串列表:

import itertools

l = ['a','b','c']

def generate_combination(source, comb):
res = []
for x, action in zip(source,comb + (0,)):
res.append(x)
if action == 0:
yield "".join(res)
res = []

print [list(generate_combination(l,c))
for c in itertools.product((0,1), repeat=len(l)-1)]

但这不适用于数字,除非您先将它们转换为字符串。

关于python - 生成列表的所有有序组合,其中每个组合包括所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725719/

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