Python 3。你知道吗
序言
所以我有一个元素列表,可以这样排序(或任何其他方式):
List = [c, d, a, c, b]
为了让事情变得更简单:
List = [a, b, c, c, d]
所以列表可能有重复项,长度在1到10之间。你知道吗
用户将选择一个范围号,例如:
r = 3
范围号是逻辑的一部分,该逻辑产生的列表数包含长度为1到r的“列表”子序列的所有可能组合。每个组合可以以任何方式排列。考虑到本例中的'List'和'r',用户将得到以下列表选择:
%Lists of length 1.
ListSelection1 = [[a], [b], [c], [c], [d]]
%Lists of length 2.
ListSelection2 = [[a, b], [a, c], [a, c], [a, d], [b, c], [b, c], [b, d], [c, c], [c, d], [c, d]]
%Lists of length 3.
ListSelection3 = [[a, b, c], [a, b, c], [a, b, d], [a, c, c], [a, c, d], [a, c, d], [b, c, c], [b, c, d], [b, c, d], [c, c, d]]
这些列表将排列在另一个列表中,如下所示:
ListSelections = [ListSelection1, ListSelection2, ListSelection3]
问题
如何识别“ListSelections”中包含与“List”相同的元素选择的(子)列表的所有可能组合?元素的顺序无关紧要。关于上述示例,可接受的列表组合将是[b,c]和[a,c,d],或[b]+[c]+[d]+[a,c]。你明白了。你知道吗
我需要确定所有正确的列表组合以及这些列表在“ListSelections”中的位置。你知道吗
我想你想找到的是multiset的分区集。为此,可以使用
sympy
如下所示:输出:
您的说明有点混乱,但我怀疑您想要的是“排列”或“组合”:
https://docs.python.org/2/library/itertools.html
Python有一个库可以为您实现这一点。你知道吗
output = [itertools.permutations(input, r_) for r_ in range(r)]
相关问题 更多 >
编程相关推荐