【发布时间】:2021-08-31 18:23:10
【问题描述】:
给定以下列表:
my_list = [-1, 0, 2, 0]
我怎样才能得到所有的三元组组合?
例如[[-1, 0, 2], [-1, 0, 0], [0, 2, 0], ...]
我曾尝试使用itertools.combinations 和itertools.combinations_with_replacement 函数,但它们都没有达到我想要的效果。
first = itertools.combinations(my_list, 3)
second = itertools.combinations_with_replacement(my_list, 3)
我将两个变量的第二个参数设置为 3,因为我想要三胞胎。但是,上面的first 变量(使用itertools.combinations)不允许任何重复的元素,因此不会生成所需的三元组之一[-1, 0, 0]。
然后,second 一个(使用itertools.combinations_with_replacement)重复太多。也就是说,生成的元素之一是[0, 0, 0],它不应该生成,因为my_list 中只有两个0。
任何线索将不胜感激
【问题讨论】:
-
我认为
itertools.permutations(my_list, 3)可以满足您的需求。 -
itertools.combindation正在生成[-1,0,0]。如果您不想在所需的输出中有任何重复,那么您必须过滤掉结果值 -
但是
combinations(my_list, 3)确实产生(-1, 0, 0)。 -
@MichaelSzczesny 你是对的!有效!你怎么知道使用排列而不是组合?我认为顺序对此无关紧要,所以我使用了组合。
-
请准确地说明你想从
[-1, 0, 2, 0]得到什么输出。
标签: python python-3.x combinations itertools