为了账号安全,请及时绑定邮箱和手机立即绑定

如何从多组元素中找到所有组合?

如何从多组元素中找到所有组合?

ITMISS 2023-07-18 15:31:15
我想从 3 组元素中形成所有可能的 6 种组合。其组成如下:从 A 组中取 2 个 ( a,b,c,d,e)从 B 组中取出 2 个 ( f,g,h,i,j) 并从 C 组中取出 2 ( k,l,m,n,o,p,q,r,s,t) 另外,在此之后,我想将其导出为 CSV 文件,如下所示:Column 1    Column 2    Column 3    Column 4   Column 5    Column 6    a            b        f            g         k           l等等...附:如果不允许使用字母,可以对其进行编号。我尝试过使用itertools, 和 list ,但仍然没有任何结果。我希望你能帮我忙。
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

这是您的排列的代码:


# Print CSV header

print("Column 1,Column 2,Column 3,Column 4,Column 5,Column 6")


A = ['a', 'b', 'c', 'd', 'e']

B = ['f', 'g', 'h', 'i', 'j']

C = ['k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't']


for a1 in range(0, len(A)):

  for a2 in range(a1 + 1, len(A)):

    

    for b1 in range(0, len(B)):

      for b2 in range(b1 + 1, len(B)):

        

        for c1 in range(0, len(C)):

          for c2 in range(c1 + 1, len(C)):

            

            print(A[a1] + "," + A[a2] + "," + B[b1] + "," + B[b2] + "," + C[c1] + "," + C[c2])

它将为问题中指定的输入打印 4500 行。

它假定顺序无关紧要,因此如果(a, b)出现,(b, a)则不会出现。它也不输出一个字母两次(a, a)就不会出现。


如果您想要双字母,请替换a1 + 1为a1(for band cas well)。

如果顺序很重要(因此您想要(a, b) 和 (b, a)),请替换a1 + 1为0(forb和cas well)。


查看完整回答
反对 回复 2023-07-18
  • 1 回答
  • 0 关注
  • 67 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信