假设我有一个包含 8 个对象的列表,编号为 1-8。
物品被放入三个盒子中,一个盒子3个,另一个盒子3个,最后一个盒子2个。根据数学,有 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)