如何在 Python3 中制作组合列表?

Posted

技术标签:

【中文标题】如何在 Python3 中制作组合列表?【英文标题】:How to make a combination list in Python3? 【发布时间】:2017-04-13 01:57:33 【问题描述】:

我想列一个这样的列表:

seq = [1,2,3]
\# implementation
print(result) \# [[1], [1,2], [1,2,3], [2], [2,3], [3]]

【问题讨论】:

看看这个。 ***.com/questions/1617699/…这个问题是针对Java的,但是第一个回复也显示了python中的算法。你想要的是powerset。 那么,我是否必须制作一个原始的 powerset 函数来从 powerset 中消除像 [1,3] 这样的不连续元素? 【参考方案1】:

您可以使用 itertools 组合:https://docs.python.org/3/library/itertools.html#itertools.combinations

你可以看看这个answer了解更多详情

【讨论】:

我知道itertools,但我不想制作像[1,3]这样的不连续元素。【参考方案2】:

我终于可以自己找到解决方案了:

N = 3
print([list(range(i, j)) for i in range(1,N+2) for j in range(i+1,N+2)])

或者,

N = 3
lis = [list(range(i + 1, j + 1)) for (i, j) in itertools.combinations(list(range(N + 1)), 2)]
print(lis)

谢谢!

【讨论】:

以上是关于如何在 Python3 中制作组合列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字符串是不是在列表中,使用每个项目上的函数(python3)[重复]

如何在 VBA(不是字典)中制作列表?

如何从 Python3 的列表中调用我自己的方法?

python3 如何得到最长组合

Python-组合两个列表以制作列表列表[重复]

PyQt4-如何制作一个按钮来删除组合框中的选定项目?