【发布时间】:2019-11-01 01:24:44
【问题描述】:
我在 python 中有两个列表。
list1 = ['A', 'B']
list2 = [True, False]
list1 在现实世界中已被简化,它将超过 2 个元素。 清单 2 只会是真或假。
给定 list1 中的 2 个元素,我想生成以下输出:
output=[
[['A', True], ['B', True]],
[['A', False], ['B', True]],
[['A', True], ['B', False]],
[['A', False], ['B', False]]]
我希望算法能够支持 list1 中包含 2 个以上元素的场景。
这是一个在 list1 中有 3 个元素的示例:
list1 = ['A', 'B', 'C']
list2 = [True, False]
output=[
[['A', True], ['B', True], ['C', True]],
[['A', True], ['B', True], ['C', False]],
[['A', True], ['B', False], ['C', True]],
[['A', False], ['B', True], ['C', True]],
[['A', False, ['B', False], ['C', True]],
[['A', True], ['B', False, ['C', False]],
[['A', False], ['B', True], ['C', False]],
[['A', False], ['B', False], ['C', False]]
]
以下内容让我很接近,但并不完全。
[zip(x, list2) for x in it.permutations(list1, len(list2))]
我知道我需要使用 itertools 做一些事情,但我无法解决它。任何建议将不胜感激。
【问题讨论】:
-
输出不明确,因为它不是一个有效的列表,括号不平衡。请更正。
-
我不认为这是重复的,或者至少不是链接问题的重复。虽然此处需要使用相同的函数 (
itertools.product),但此处所需的输出不同(列表列表的列表!),这意味着需要使用product的不同参数而不是其他问题。 -
谢谢 Blckknight 我同意你的评价。感谢您实际阅读内容并与我合作。您下面的解决方案是最简洁的。