如何用 Python 找到指定字串的所有可能的排列?
如需找到某字串的所有可能排列,可以使用 itertools 模組,其中包含一個有用的方法:permutations(iterable[, r])。此方法返回可迭代物件中長度為 r 的後續元素排列,返回結果為元組。
為將所有排列結果作為字串獲取,需要遍歷函式呼叫並將元組連線起來。例如
>>>from itertools import permutations >>>print [''.join(p) for p in permutations('dune')] ['dune','duen', 'dnue', 'dneu', 'deun', 'denu', 'udne', 'uden', 'unde', 'uned', 'uedn','uend', 'ndue', 'ndeu', 'nude', 'nued', 'nedu', 'neud', 'edun', 'ednu','eudn', 'eund', 'endu', 'enud']
如果你不想使用內建方法,而建立你自己的方法,可以使用以下遞迴解決方案
def permutations(string, step = 0): if step == len(string): # we've gotten to the end, print the permutation print "".join(string) for i in range(step, len(string)): # copy the string (store as array) string_copy = [c for c in string] # swap the current index with the step string_copy[step], string_copy[i] =string_copy[i], string_copy[step] # recurse on the portion of the stringthat has not been swapped yet permutations(string_copy, step + 1) print (permutations ('one'))
輸出
one oen noe neo eno eon None
廣告