Как вы обновляете локальную переменную класса в Python в цикле возврата? - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь добавить перестановки списка целых чисел к локальной переменной в python, но заканчиваю добавлять одну перестановку несколько раз.Код будет печатать все результаты правильно, но не уверен, почему моя переменная класса не будет корректно обновлена.

Любая помощь будет чрезвычайно признательна !!

Я работаю над проблемой leetCode, но могуне выводить правильные результаты.Я пытаюсь обновить свой массив myVals в цикле обратного отслеживания, но сохраняю только одну перестановку.

Однако я могу напечатать все результаты, когда

class Solution:
    def __init__(self):
        self.myVals = []

    def add(self, x):
        self.myVals.append(x)

    def permuteArray(self, nums, l, r):
        if l == r:
            print(nums)
            self.add(nums)
        else:
            for i in range(l, r + 1):
                nums[l], nums[i] = nums[i], nums[l]
                self.permuteArray(nums, 1+l, r)
                nums[l], nums[i] = nums[i], nums[l]

    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        numCount = len(nums)
        start = 0
        self.permuteArray(nums, start, numCount - 1)
        print(self.myVals)

nums = [1,2,3]
driver = Solution()
result = driver.permute(nums)

Ожидаемые результаты: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]]

Фактические результаты: [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1,2, 3]]

1 Ответ

0 голосов
/ 31 декабря 2018

Спасибо!Добавил x.copy () и все заработало!Ценю ваш комментарий

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...