我在用Python理解这段代码时遇到麻烦

时间:2019-11-19 01:00:32

标签: python permutation

这是实际起作用的代码。它返回任意长度的给定字符串的所有可能排列 例如: 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:]

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

1 个答案:

答案 0 :(得分:0)

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

之后获得的新字符串作为参数来调用同一函数。

希望这会有所帮助。