Я пытаюсь создать список перестановок (также списков), добавляя глобальный список по мере создания каждой перестановки. Я могу сказать, что перестановки генерируются правильно, печатая каждую после ее создания. Однако после вызова функции мой глобальный список содержит только исходный список для каждого случая, когда функция генерировала перестановку.
array = []
def perms(a, k):
if (k == len(a)):
global array
array.append(a)
print(a) #perms function is working properly
else:
for i in range(k, len(a)):
a[k], a[i] = a[i], a[k]
perms(a, k+1)
a[k], a[i] = a[i], a[k]
perms([1,2,3,4], 0)
#only prints the original list for each time a perm was generated
for i in array: print(i)
Когда я печатаю внизу, он показывает массив = [[1,2,3,4], [1,2,3,4], ...]
Похоже, что мой глобальный массив списка может видеть только параметр perms a в той области, в которой он был вызван.
Как бы это правильно сделать?
itertools.permutations
? - person BrenBarn   schedule 06.06.2014