我不知道';我不理解python中生成置换的递归方法
这个递归方法如何在给定字符串的情况下生成置换?有人能给我解释一下吗我不知道';我不理解python中生成置换的递归方法,python,python-2.7,recursion,permutation,Python,Python 2.7,Recursion,Permutation,这个递归方法如何在给定字符串的情况下生成置换?有人能给我解释一下吗 def exchange(self, s): if 0 == len(s): yield s else: for i in range(len(s)): for p in self.exchange(s[:i] + s[i + 1:]): yield [s[i]] + p 该代码具有以下思想:通过从输入中选择一个元素来交付所
def exchange(self, s):
if 0 == len(s):
yield s
else:
for i in range(len(s)):
for p in self.exchange(s[:i] + s[i + 1:]):
yield [s[i]] + p
该代码具有以下思想:通过从输入中选择一个元素来交付所有置换,然后交付剩余元素的所有置换,这些置换由所选元素前置。在此之后,使用另一个元素重复此操作 因此,如果您有[0,1,2]作为输入,那么代码将使用第一个元素(0)并构建其余元素(1和2)的所有置换。(这些排列当然是[1,2]和[2,1]) 然后它将0前置到[1,2],然后将0前置到[2,1],i。E[0,1,2]和[0,2,1] 然后继续并选择下一个元素(1)。然后构建剩余元素(0,2)(即[0,2]和[2,0])的置换
诸如此类。它被称为相关的:@rickdenhaan:我想这是很清楚的。我认为OP在理解代码的内部工作方面有更多的问题。