我想知道是否有人能帮忙完成以下任务: 当顺序无关紧要的时候,怎样才能得到一个列表可以分解成子列表的所有组合?在
假设我有4个项目的列表:
import itertools as it
a = [1, 2, 3, 4]
print(list(it.combinations(a, 2)))
这将为我列出6种可能的配对:
^{pr2}$如何利用它?或任何其他方式)一组包含原始[1, 2, 3, 4]
顺序的列表?因此在本例中,它将包含三个子列表:
[(1, 2), (3, 4)]
[(1, 3), (2, 4)]
[(1, 4), (2, 3)]
更新:
一个小小的澄清:
换句话说,当n元组中的顺序无关紧要时,我需要得到n元组的所有集合,以便它们的成员包含原始列表的所有总体。因此[(1, 2), (3, 4)]
是可以的,但是{
更新2:
因此,对于长度为6的列表,对于大小为2的块,这个fun
函数的工作原理如下:
import itertools as it
a = [1, 2, 3, 4, 5, 6,]
r = 2
# fun(a,r):
# OUT:
# [
# (1, 2), (3, 4), (5, 6)
# (1, 3), (2, 4), (5, 6),
# (1, 4), (2, 3), (5, 6),
# (1, 5), (2, 3), (4, 6),
# (1, 6), (2, 3), (4, 5),
# ]
由于您需要
a
中的“余数”,所以可以使用set
差异但是,这会给你两倍于你所需要的结果,所以为了消除这些重复,我们需要对结果集进行排序和
^{pr2}$set
化,这将给我们一组list
s,这些不能被转换成set
s。然后你应该将list
s转换为tuple
s如果您需要一个
list
的list
,那么您可以使用以下方法也许这段代码可以帮助你的要求。在
只需
zip
组合,与它相反,只取结果列表的前半部分相关问题 更多 >
编程相关推荐