Как обновить значения в цикле for в python?

#python

#python

Вопрос:

Допустим, у меня есть список переменных со следующими значениями

 a, b, c = 1, 2, 3

  

Как я могу обновить значение a,b,c в цикле for?

Я пробовал следующее, но это не работает.

 for v in (a, b, c):
    v = v   1
  

Значения для a,b,c остаются неизменными после завершения процесса

 print(a, b, c)
# [1] 1 2 3
  

Комментарии:

1. Я думаю, вам придется сделать это вручную. Здесь a, b, c вызываются по ссылке, следовательно, обновление существует только для локальной переменной v , а не a, b, c

2. Мне не совсем понятно, чего вы хотели бы достичь, почему for loop ?

3. @CosmosZhu Что вы подразумеваете под «вызывается по ссылке»? Я не знаком с этим, и поиск в Google только еще больше запутывает меня.

4. @Cosmos547 Просто это означает, что во время цикла for операции не применяются к исходной переменной.

5. Вы буквально присваиваете переменной v , что действительно не изменит переменные a , b ни c . Вам пришлось бы присваивать переменной по имени , но как только вы туда перейдете, вы обычно ошибаетесь. Вероятно, есть более эффективные подходы к любой проблеме, которую вы пытаетесь реализовать здесь, которые делают эту проблему спорной.

Ответ №1:

Попробуй это:

 a, b, c = [v 1 for v in (a,b,c)]
  

Ответ №2:

Использование списков или диктовок

Если у вас много связанных переменных, хорошим выбором будет сохранить их в list или dict . Это имеет много преимуществ по сравнению с наличием множества отдельных переменных:

  1. Легко выполнить операцию со всеми из них (например, обновление, печать, сохранение).
  2. Не засоряет ваш код / пространство имен множеством переменных.
  3. Лучший поддерживаемый код: меньше мест для изменения, если вам нужно добавить / удалить переменную.

Обновите значения в цикле for

 # example using a dict

# give them a meaningful name
counters = {"a": 1, "b": 2, "c": 3}

for key in counters:
    counters[key]  = 1
  

Сравнивая это с обновлением отдельных переменных в цикле

a,b,c = [v 1 for v in (a,b,c)] Это создает промежуточный список с новыми значениями, присваивает их вашим переменным, а затем снова удаляет список. Это ненужный промежуточный шаг, но не большая проблема.

Реальная проблема с этим заключается в том, что вам все равно придется дважды выписывать имя каждой переменной. Вряд ли это улучшение по сравнению с простым написанием a,b,c = a 1,b 1,c 1 .