Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不知道';我不理解python中生成置换的递归方法_Python_Python 2.7_Recursion_Permutation - Fatal编程技术网

我不知道';我不理解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在理解代码的内部工作方面有更多的问题。