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

我想从 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 ,但仍然没有任何结果。我希望你能帮我忙。


ITMISS
浏览 70回答 1
1回答

catspeake

这是您的排列的代码:# Print CSV headerprint("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)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python