繁体   English   中英

Python:生成非重复排列

[英]Python: Generating Non Repeating Permutations

我希望能够快速有效地生成给定列表的所有可能排列而没有任何重复,例如:

如果从['A','B','C','D']选择两个项目['A','B','C','D']则可能的排列是:

['A','B']
['A','C']
['A','D']
['B','C']
['B','D']
['C','D']

其中['A','B']等于 - 因此是 - ['B','A']的重复

对于执行您指定的操作的最简单代码,请尝试以下操作:

letters_list = ['A','B','C','D'] 
for i in range(4):
    for j in range(4):
        if i < j:
            a = letters_list[i]
            b = letters_list[j]
            print([a,b])

或者,如果您想要更通用的代码:

letters_list = ['A','B','C','D','E','F','G'] 
for i in range(len(letters_list)):
    for j in range(len(letters_list)):
        if i < j:
            a = letters_list[i]
            b = letters_list[j]
            print([a,b])

例如,如果您想要 3 个字母的所有组合:

letters_list = ['A','B','C','D','E','F','G'] 
for i in range(len(letters_list)):
    for j in range(len(letters_list)):
        for k in range(len(letters_list)):
            if i < j < k:
                a = letters_list[i]
                b = letters_list[j]
                c = letters_list[k]
                print([a,b,c])

如果您更喜欢较短的代码而不是可读的代码:

letters_list = ['A','B','C','D','E','F','G'] 
for i in range(len(letters_list)):
    for j in range(len(letters_list)):
        for k in range(len(letters_list)):
            if i < j < k:
            print([letters_list[i],letters_list[j],letters_list[k]])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM