簡體   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