В следующем примере:
container = [ (1, "a") ,
(40, "b") ,
(24, "c") , #we intend to change this
(103, "d")
]
for k,v in container:
if k == 24:
v += " good"
print container
Пара данных (24, "c") в контейнере по- прежнему останется прежним значением и не будет изменена на (24, "c хорошо"). Каким образом можно было бы изменить его на (24, "c хорошо"), как предполагалось во время итерации?
Я использую python 2.7, но примеры 3.x также приветствуются.
Благодарю.
Вы можете использовать enumerate()
отслеживание индекса элемента контейнера, на который вы смотрите:
for i, (k,v) in enumerate(container):
if k == 24:
container[i] = (k, v+" good")
Немного пошутил. Исправлено
container = [ (1, "a") ,
(40, "b") ,
(24, "c") , #we intend to change this
(103, "d")
]
for k, n in enumerate(container):
if n[0] == 24:
container[k] = (n[0], n[1] + " good")
print container
n
- это кортеж, а container[n]
не имеет смысла (в словах Python: «TypeError: индексы списка должны быть целыми числами, а не кортежем»)