Если у меня есть класс Python, который включает список, каков наилучший способ обновить этот список внутри для l oop?
Например:
class Test:
def __init__(self):
self.values = [ 1, 2, 3 ]
def does_not_work(self):
for value in self.values:
value += 1
def this_works(self):
for i, value in enumerate(self.values):
self.values[i] += 1
def works_too(self):
new_values = []
for value in self.values:
value += 1
new_values.append(value)
self.values = new_values
t = Test()
print t.values
>> [ 1, 2, 3 ]
t.does_not_work()
print t.values
>> [ 1, 2, 3 ]
t.this_works()
print t.values
>> [ 2, 3, 4 ]
t.works_too()
print t.values
>> [ 3, 4, 5 ]
- Вариант № 1: обновление значений в списке не «прилипает», так что это явно не правильный подход
- Вариант № 2: работает как задумано, но требует
enumerate()
- Вариант № 3: использует более простой синтаксис for-l oop, но требует пересоздания списка
Я уверен, что есть много других способов работы (причудливые методы понимания списков) , et c) тоже, но меня интересует удобочитаемость / ясность в отношении краткости.
Примечание: есть довольно много вопросов, которые, кажется, намекают на это, но (из того, что я обнаружил) большинство заключено в код проекта или укажите c проблемы - я ищу общий наилучший ответ.