我很难尝试实现以下目标: 我有一个列表(比如 [a,b,c,d]),我需要以各种可能的方式将它分成对和唯一元素(顺序不重要),即:
[a,b,c,d], [(a,b), c,d], [(a,b), (c,d)], [a, (b,c), d], [(a,d), (b, c)]...
等等。 This thread解决了仅使用对时的问题,但我还需要独特的元素,但我无法做到这一点。 任何想法将不胜感激。 谢谢!
最佳答案
也许更简单的解决方案是递归解决方案。 只需使用第一个元素创建每个组合,然后在没有它的情况下移动到子列表。
def partition(L):
if len(L) <= 1:
return [L]
partitions = [[L[0]] + p for p in partition(L[1:])]
for i in xrange(1, len(L)):
partitions.extend([[(L[0], L[i])] + p for p in partition(L[1:i]+L[i+1:])])
return partitions
关于python - 成对拆分列表和唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30007067/