#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
. Это имеет много преимуществ по сравнению с наличием множества отдельных переменных:
- Легко выполнить операцию со всеми из них (например, обновление, печать, сохранение).
- Не засоряет ваш код / пространство имен множеством переменных.
- Лучший поддерживаемый код: меньше мест для изменения, если вам нужно добавить / удалить переменную.
Обновите значения в цикле 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
.