gpt4 book ai didi

Python列表列表的所有组合

转载 作者:太空狗 更新时间:2023-10-30 00:54:55 24 4
gpt4 key购买 nike

所以我有一个字符串列表列表

[['a','b'],['c','d'],['e','f']]

我想得到所有可能的组合,这样的结果是

[['a','b'],['c','d'],['e','f'],
['a','b','c','d'],['a','b','e','f'],['c','d','e','f'],
['a','b','c','d','e','f']]

到目前为止,我已经想出了这个代码片段

input = [['a','b'],['c','d'],['e','f']]
combs = []
for i in xrange(1, len(input)+1):
els = [x for x in itertools.combinations(input, i)]
combs.extend(els)
print combs

主要遵循 this post 中的答案.

但这会导致

[(['a','b'],),(['c','d'],),(['e','f'],),
(['a','b'],['c','d']),(['a','b'],['e','f']),(['c','d'],['e','f']),
(['a','b'],['c', 'd'],['e', 'f'])]

我现在很困惑,试图找到一种优雅的 pythonic 方式来解压这些元组。

最佳答案

您可以使用 itertools.chain.from_iterable将列表的元组展平为列表。示例 -

import itertools
input = [['a','b'],['c','d'],['e','f']]
combs = []
for i in xrange(1, len(input)+1):
els = [list(itertools.chain.from_iterable(x)) for x in itertools.combinations(input, i)]
combs.extend(els)

演示 -

>>> import itertools
>>> input = [['a','b'],['c','d'],['e','f']]
>>> combs = []
>>> for i in range(1, len(input)+1):
... els = [list(itertools.chain.from_iterable(x)) for x in itertools.combinations(input, i)]
... combs.extend(els)
...
>>> import pprint
>>> pprint.pprint(combs)
[['a', 'b'],
['c', 'd'],
['e', 'f'],
['a', 'b', 'c', 'd'],
['a', 'b', 'e', 'f'],
['c', 'd', 'e', 'f'],
['a', 'b', 'c', 'd', 'e', 'f']]

关于Python列表列表的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33130097/

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