【发布时间】:2017-03-26 18:00:12
【问题描述】:
我需要一种方法来从两个不同的列表中找到所有组合,其中每个元素可能为空,也可能不为空。例如,对于这两个列表,我想调用一个返回所有这些组合列表的函数:
a = ['A', 'S', 'B']
b = ['A', 'B']
find_combinations(a, b)
应该返回:
[['A', 'S', 'B'], ['A', 'S'], ['S', 'B'], ['S']]
我可以做这个简单的例子,但如果列表更复杂,比如['A', 'B', 'S', 'A', 'A'],那么可能的选项会复杂得多:
[['A', 'B', 'S', 'A', 'A'],
['A', 'B', 'S', 'A'],
['A', 'B', 'S', 'A'],
['B', 'S', 'A', 'A']
... etc.
【问题讨论】:
-
我不清楚从输入到输出的逻辑是什么,但我建议你看看
itertools。 -
所以您想遍历
b的组合并从a中删除这些? -
说
a = ['A','A']和b = ['A']。[]是一个有效的结果:它会导致删除元素 multiple 次吗?此外,b的订购方式是否与a相同?如果a = ['A','S','B']和b = ['B',A']会发生什么? -
第一个例子不应该也输出
['A']和['B'] -
@JuanT:根据标题和我的理解,生成
b的组合并删除a...
标签: python list python-3.x combinations