在 Python 中查找字符串所有排列的方法
在 Python 中,排列是一个表示可能顺序的过程。它通过定期更改命令的可能位置来处理列表中的项目。在 Python 中,我们可以使用不同的方法来创建和打印配置。
这里我们有几种方法来找到字符串的排列。
方法 1:使用 itertools 方法
示例
import itertools
def Permutation(string):
permut = itertools.permutations(string)
result = [''.join(p) for p in permut]
return result
string = "Tutor"
print("Original String: ",string)
permutations = Permutation(string)
print("Possible Combination---")
print(permutations)
输出
Original String: Tutor Possible Combination--- ['Tutor', 'Tutro', 'Tuotr', 'Tuort', 'Turto', 'Turot', 'Ttuor', 'Tturo', 'Ttour', 'Ttoru', 'Ttruo', 'Ttrou', 'Toutr', 'Tourt', 'Totur', 'Totru', 'Torut', 'Tortu', 'Truto', 'Truot', 'Trtuo', 'Trtou', 'Trout', 'Trotu', 'uTtor', 'uTtro', 'uTotr', 'uTort', 'uTrto', 'uTrot', 'utTor', 'utTro', 'utoTr', 'utorT', 'utrTo', 'utroT', 'uoTtr', 'uoTrt', 'uotTr', 'uotrT', 'uorTt', 'uortT', 'urTto', 'urTot', 'urtTo', 'urtoT', 'uroTt', 'urotT', 'tTuor', 'tTuro', 'tTour', 'tToru', 'tTruo', 'tTrou', 'tuTor', 'tuTro', 'tuoTr', 'tuorT', 'turTo', 'turoT', 'toTur', 'toTru', 'touTr', 'tourT', 'torTu', 'toruT', 'trTuo', 'trTou', 'truTo', 'truoT', 'troTu', 'trouT', 'oTutr', 'oTurt', 'oTtur', 'oTtru', 'oTrut', 'oTrtu', 'ouTtr', 'ouTrt', 'outTr', 'outrT', 'ourTt', 'ourtT', 'otTur', 'otTru', 'otuTr', 'oturT', 'otrTu', 'otruT', 'orTut', 'orTtu', 'oruTt', 'orutT', 'ortTu', 'ortuT', 'rTuto', 'rTuot', 'rTtuo', 'rTtou', 'rTout', 'rTotu', 'ruTto', 'ruTot', 'rutTo', 'rutoT', 'ruoTt', 'ruotT', 'rtTuo', 'rtTou', 'rtuTo', 'rtuoT', 'rtoTu', 'rtouT', 'roTut', 'roTtu', 'rouTt', 'routT', 'rotTu', 'rotuT']
在这个程序中,我们导入了一个名为 itertools 的库。这个库帮助我们执行匹配、排列表格和进行更改等任务。然后,我们创建了一个名为 Permutation 的函数,该函数使用字符串参数调用。在这个函数中,我们使用 itertools.permutations 获得了字符串的所有可能排列。此函数将所有可能的结果返回到一个列表中。
然后,我们创建了一个名为 result 的新列表,其中我们将每个可能的结果连接成一个字符串。之后,我们将字符串 Tutor 组织成字符串。然后,我们用字符串调用 Permutation 函数并将其结果存储在 permutations 中。最后,我们使用 print 函数打印了排列。
方法 2:使用递归方法
示例
def Permutation(stg):
if len(stg) == 1:
return [stg]
else:
permut = []
for i, x in enumerate(stg):
for per in Permutation(stg[:i] + stg[i+1:]):
permut.append(x + per)
return permut
string = 'Pyth'
print("原始字符串: ",string)
print("可能的组合---")
print(Permutation(string))
输出
原始字符串:Pyth 可能的组合--- ['Pyth']
在此代码中,有一个名为"Permutation"的函数,它定义了一个字符串。此函数以递归方式工作,以获取输入字符串的所有关键子字符串。函数"Permutation"已使用新递归修改为字符串以获取所有不同的关键选项。其目的是获取所有不同的关键子字符串,以便我们可以按顺序显示字符串的字符。此代码返回所有有效选项的列表。以下是代码示例,其中输入字符串为"Pyth",我们为此字符串调用"Permutation"函数。然后我们使用 print 函数打印所有关键选项的列表。
方法 3:使用回溯方法
示例
def Permutation(stg):
def backtrack(n, x, res):
if len(x) == len(stg):
res.append(''.join(x))
return
for i in range(len(n)):
char = n[i]
if char not in x:
x.append(char)
backtrack(n, x, res)
x.pop()
n = list(stg)
permutations = []
backtrack(n, [], permutations)
return permutations
string = "var"
print("原始字符串: ",string)
print("可能的组合---")
permutations = Permutation(string)
print(permutations)
输出
原始字符串:var 可能的组合--- ['var', 'vra', 'avr', 'arv', 'rva', 'rav']
在此代码中,我们创建了一个函数"Permutation",该函数负责获取给定字符串的所有排列(配置)。我们使用了一种回溯技术,它帮助我们获取具有不同字母的所有可能排列。为此,我们使用了一个内部函数"backtrack",该函数以递归方式调用。
在函数"backtrack"中,我们回溯数字 (n),如果有合适的排列,我们会将它们添加到结果列表 (res)。我们一次添加和删除一个尚未包含的字母。
函数"Permutation"使用字符串 (stg) 调用并返回所有排列。我们提取了字符串"var"的排列并打印出来。
结论
总之,我们已经看到了一种在 Python 中查找字符串所有子字符串的方法。我们开发了一个实用的程序,将给定字符串的信息转换为所有可能的组合。我们利用这个程序来获取所有最新的结果。
该程序实时运行,可以采用任何配置。但是,随着字符串长度的增加,该程序可能需要更长时间才能运行。因此,在将其用于长字符串之前,必须仔细考虑时间。
总的来说,我们所看到的一切都表明我们应该能够编写一个简单而高效的 Python 程序来发现字符串的所有子字符串。
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

