【发布时间】:2016-05-18 04:21:54
【问题描述】:
假设在 Python 中我有 3 个列表:a, b, c 的可变长度。例如:
a=[1,2,3]
b=[4,5,6]
c=[7,8]
我想获得上面 3 个列表中两个元素的每个唯一组合,即。 e.
[1,4],[1,5],[1,6],[1,7],[1,8],[2,4],[2,5]... 并且不是 3 个列表的唯一组合(例如 [1,4,7],[1,4,8],...)。
我已经使用itertools 查看了solution here,这对于 2 个列表来说非常好;但是,当包含 nth 列表时,此解决方案不再适用,因为唯一组合的长度为 n。
这是我尝试过的:
import itertools
a=[1,2,3]
b=[4,5,6]
c=[7,8]
d=list(itertools.product(a,b,c))
[(1, 4, 7), (1, 4, 8), (1, 5, 7), (1, 5, 8), (1, 6, 7), (1, 6, 8), (2, 4, 7), (2, 4, 8), (2, 5, 7), (2, 5, 8), (2, 6, 7), (2, 6, 8), (3, 4, 7), (3, 4, 8), (3, 5, 7), (3, 5, 8), (3, 6, 7), (3, 6, 8)]
注意:以上只是一个示例,该解决方案应该适用于可变长度的n 列表,并且可能在不同的列表中具有相同的值...任何关于我如何做的想法将不胜感激! :)
编辑:正如@SirParselot 所问,元素必须来自不同的列表
【问题讨论】:
-
你试过什么?
-
组合必须在不同的列表之间吗?
-
FWIW,我的答案适用于原始问题,具有任意数量的输入列表。但是“冗余元素”到底是什么意思?
-
@PM2Ring 编辑完成!只要我没有在不同列表中出现两次(或更多)相同的值,您的解决方案似乎确实可以正常工作:)
-
@tlorin:Pynchia 在脚本顶部执行
import itertools as it。我会在我的答案中添加一些代码。