Как сгенерировать все перестановки списка в Python - PullRequest
503 голосов
/ 19 сентября 2008

Как вы генерируете все перестановки списка в Python, независимо от типа элементов в этом списке?

Например:

permutations([])
[]

permutations([1])
[1]

permutations([1, 2])
[1, 2]
[2, 1]

permutations([1, 2, 3])
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]

Ответы [ 31 ]

0 голосов
/ 08 октября 2016

Этот способ лучше, чем альтернативы, которые я вижу, посмотрите.

def permutations(arr):
  if not arr:
    return
  print arr
  for idx, val in enumerate(arr):
    permutations(arr[:idx]+arr[idx+1:])
...