如何在Python中找到给定字符串的所有可能排列方式?

如何在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):
        #我们已达到结尾,打印排列方式
        print "".join(string)
     for i in range(step, len(string)):
        #复制字符串(存储为数组)
        string_copy = [c for c in string]
         #用步骤交换当前索引
        string_copy[step], string_copy[i] =string_copy[i], string_copy[step]
         #对尚未交换的字符串部分进行递归
        permutations(string_copy, step + 1)
print (permutations ('one'))

输出:

one
oen
noe
neo
eno
eon
None

阅读更多:Python 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程