weixin_49152204 2021-04-08 07:25 采纳率: 50%
浏览 220
已采纳

python 穷举10个人划分到三个组的所有组合

我想10个人划分到3个组(A,B,C)中,也就是每个人都有三种选择,所以一共有3**10=59049种,想最终得出来的结果是

A=[1],B=[2],C=[3,4,5,6,7,8,9,10]

A=[1],B=[3],C=[2,4,5,6,7,8,9,10]

A=[1],B=[4],C=[2,3,5,6,7,8,9,10]

························································

A=[3,4,5,6,7,8,9,10],B=[2], C=[1]

  • 写回答

5条回答 默认 最新

  • CSDN专家-孙老师 2021-04-08 08:40
    关注

    可以尝试用itertools这个模块进行迭代,这个模块里面有很多创建迭代器的函数。

    给一个思路:

    第一组的元素个数最多可能有8个,取值范围为1-10。

    当第一个组为1个元素的时候,第二组的元素个数最多可能为8个;

    当第一个组为2个元素的时候,第二组的元素个数最多可能为7个;

    以此类推,当第一个组为i个元素的时候,第二组的元素个数最可能为9-i,取值范围为1-10,并减去第一组的元素,剩余记为rem。

    第三组的元素则为rem减去第二组中的元素。

    itertools.combinations可以对一个集合的元素按照个数进行不同的组合,例如,从1-10中任取2个数字,可能有以下组合。

    import itertools
    L1 = itertools.combinations(range(1,11), 2)
    print(list(L1))
    [(1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (1, 10), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (2, 10), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (3, 10), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (4, 10), (5, 6), (5, 7), (5, 8), (5, 9), (5, 10), (6, 7), (6, 8), (6, 9), (6, 10), (7, 8), (7, 9), (7, 10), (8, 9), (8, 10), (9, 10)]

    所以,可以按照如下方式写代码:

    import itertools
    
    count=0
    
    set_all=set(range(1,11))
    
    for i in range(1,9):
        for L1 in itertools.combinations(range(1,11), i):
            rem=set_all-set(L1)
            for j in range(1,10-i):
                for L2 in itertools.combinations(rem, j):
                    L3=rem-set(L2)
                    count+=1
                    print(count,end=' ')
                    print(set(L1),set(L2),L3)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 求GCMS辅导数据分析
  • ¥30 SD中的一段Unet下采样代码其中的resnet是谁跟谁进行残差连接
  • ¥15 Unet采样阶段的res_samples问题
  • ¥60 Python+pygame坦克大战游戏开发实验报告
  • ¥15 R语言regionNames()和demomap()无法选中中文地区的问题
  • ¥15 Open GL ES 的使用
  • ¥15 我如果只想表示节点的结构信息,使用GCN方法不进行训练可以吗
  • ¥15 QT6将音频采样数据转PCM
  • ¥15 下面三个文件分别是OFDM波形的数据,我的思路公式和我写的成像算法代码,有没有人能帮我改一改,如何解决?
  • ¥15 Ubuntu打开gazebo模型调不出来,如何解决?
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部