我难以理解Python中的这段代码[重复]

问题描述 投票:0回答:1

此问题已经在这里有了答案:

这里是实际起作用的代码。它返回任意长度的给定字符串的所有可能排列例如: Permutations('ab') returns ['ab','ba]

def permutations(string):
  if len(string) == 1: return set(string)
  first = string[0]
  rest = permutations(string[1:])  #This is the line that i do not understand
  result = set()
  for i in range(0, len(string)):
    for p in rest:
      result.add(p[0:i] + first + p[i:])
  return result

我不知道rest = permutations(string[1:])行在上面的评论。我尝试像这样rest = string[1:]编写它,但是当这样编写时它不能正常工作。

这两行代码之间有什么区别?

rest = permutations(string[1:]) 

rest = string[1:]

它似乎在函数内部调用了自己,但是我不确定这将如何起作用。

python permutation
1个回答
0
投票

它正在执行recursion,这是编程中的流行概念。在每次迭代中,它都以slicing“ string [1:]”

© www.soinside.com 2019 - 2024. All rights reserved.