【发布时间】:2013-05-02 05:02:25
【问题描述】:
假设我有一个包含 8 个对象的列表,编号为 1-8。
对象被放入三个盒子中,一个盒子里三个,另一个盒子里三个,最后一个盒子里两个。根据数学,有 8C3*5C3=560 种方法可以做到这一点。我想循环浏览 560 个项目。 Python中有什么方法可以做到这一点?
结果应该是这样的:
list=['12','345',678'], ['12','346','578'], ..., etc.
请注意,['12','345','678'] 和 ['12','354',876'] 在此用途中被视为相同。
我想为这个列表做一个for循环。 Python中有什么方法可以做到这一点?
这是我得到的解决方案,但看起来很难看。
import itertools
for c1,c2 in itertools.combinations(range(8),2):
l2=list(range(8))
l2.pop(c2)
l2.pop(c1)
for c3,c4,c5 in itertools.combinations(l2,3):
l3=l2[:]
l3.remove(c5)
l3.remove(c4)
l3.remove(c3)
c6,c7,c8=l3
print(c1,c2,c3,c4,c5,c6,c7,c8)
【问题讨论】:
-
你是怎么解决的?什么代码?
-
您可以使用 itertools docs.python.org/2/library/itertools.html 并添加一些您自己的逻辑。
-
我必须说我不太明白你的问题。
-
那么,你解决了吗?
标签: python list combinations