个性化阅读
专注于IT技术分析

Python程序打印给定字符串的所有排列

本文概述

排列(也称为”排列编号”或”顺序”)是将有序列表S的元素重新排列为与S本身一一对应的关系。长度为n的字符串为n!排列。

资料来源:Mathword(http://mathworld.wolfram.com/Permutation.html)

以下是字符串ABC的排列。

ABC++ACB BAC++BCA CBA CAB

python

# Python program to print all permutations with
# duplicates allowed
  
def toString( List ):
     return ''.join( List )
  
# Function to print permutations of string
# This function takes three parameters:
# 1. String
# 2. Starting index of the string
# 3. Ending index of the string.
def permute(a, l, r):
     if l = = r:
         print toString(a)
     else :
         for i in xrange (l, r + 1 ):
             a[l], a[i] = a[i], a[l]
             permute(a, l + 1 , r)
             a[l], a[i] = a[i], a[l] # backtrack
  
# Driver program to test the above function
string = "ABC"
n = len (string)
a = list (string)
permute(a, 0 , n - 1 )
  
# This code is contributed by Bhavya Jain

输出如下:

ABC
ACB
BAC
BCA
CBA
CAB

通过使用内置函数

为了找到给定字符串的排列, 我们使用内置函数。你可以使用itertools模块, 该模块具有称为permutations(iterable [, r])的有用方法。此方法将返回可迭代元素的连续r长度排列作为元组。你需要遍历函数调用并加入元组。

# Python program to print all permutations
  
from itertools import permutations
print [' '.join(p) for p in permutations(' ABC')]
# This code is contributed by Vidit Varshney

输出如下:

['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']

请参考完整的文章编写程序以打印给定字符串的所有排列更多细节!

赞(0)
未经允许不得转载:srcmini » Python程序打印给定字符串的所有排列

评论 抢沙发

评论前必须登录!