小编use*_*726的帖子

Python将8个对象的组合循环为3组,3-3-2

假设我有一个包含8个对象的列表,编号为1-8.

这些物体被放入三个盒子中,3个放在一个盒子里,3个放在另一个盒子里,2个放在最后一个盒子里.通过数学,有8C3*5C3 = 560种方法可以做到这一点.我想在那里循环560项.Python有什么方法可以这样做吗?

结果应如下所示:

list=['12','345',678'], ['12','346','578'], ..., etc.
Run Code Online (Sandbox Code Playgroud)

请注意,['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)
Run Code Online (Sandbox Code Playgroud)

python combinations list

7
推荐指数
1
解决办法
824
查看次数

标签 统计

combinations ×1

list ×1

python ×1