Для каждого l oop обновить переменную - PullRequest
0 голосов
/ 18 июня 2020

У меня есть задание, где мне нужно реализовать заглушки кода. В основном упрощенная версия:

for a,b in zip(var_a,var_b):
   # implementation here

Я почти уверен, что задача состоит в том, чтобы обновить a с помощью переменной b. Но это было бы очень странно, потому что я понимаю, что a, b - это просто копии var_a, var_b. Таким образом, изменение значений a, b не повлияет на var_a, var_b. Я прав?

Конечно, я мог бы легко изменить код, поэтому я действительно обновляю var_a, var_b, но я не думаю, что изменение заглушек предназначено, что либо означало бы, что заглушка была плохо спроектирована, либо я не правильно понял задачу.

Не могли бы вы подтвердить, что в этом для l oop у меня есть доступ только к копиям, или есть супер простой способ обновить исходные переменные без изменения заглушки?

1 Ответ

0 голосов
/ 18 июня 2020

a и b не являются копиями var_a и var_b, а скорее указывают на первый элемент в var_a и var_b соответственно.

Об изменении их значения - вы можете это сделать, но, конечно, если вы просто переназначьте их, это не повлияет на var_a или var_b. Так что, если они изменяемы - это не способ сделать это.

, но, например, если var_a и var_b являются списками списков, вы можете сделать что-то вроде: a.extend (b). И это повлияет на список в var_a.

Прочтите о изменчивости объектов в python.

>>> var_a = [[1,2,3],[10,20,30]]
>>> var_b = [['a','b','c'], ['A','B','C']]
>>> for a, b in zip(var_a, var_b):
...  a.extend(b)
...
>>> var_a
[[1, 2, 3, 'a', 'b', 'c'], [10, 20, 30, 'A', 'B', 'C']]

но целые числа неизменяемы:

>>> var_a = [1,2,3]
>>> var_b = [10,20,30]
>>> for a, b in zip(var_a, var_b):
...  a += b
...
>>> var_a
[1, 2, 3]
...