В этом post могут использоваться следующие фрагменты кода.Разница между 'для [-1] в' и 'для a в a' в Python?
a = [0, 1, 2, 3]
for a[-1] in a:
print(a[-1])
Обратитесь к этому answer
Делая
for a[-1] in a
, вы на самом деле итерацию по списку и временного хранения значение текущего элемента вa[-1]
.
Кроме того, я думаю, что делать for a in a
, он должен перебирать список и временного хранения значение текущего элемента a
, поэтому значение a
может быть 0
, а не итератора, то TypeError
будет сгенерировано исключение в следующей итерации. Однако результат следующий.
>>> a = [0, 1, 2, 3]
>>> for a in a:
... print a
...
0
1
2
3
>>> a
3
Как это понять?
Итак, 'a [-1]' может изменить «объект итератора»? – zangw
@zangw Он не изменяет объект итератора, он фактически изменяет значение в объекте списка. Когда итератор достигает последнего элемента, он просто возвращает все, что есть в последней позиции списка. – thefourtheye
, так как «итерационный объект» создается в 'for' iteration,' a [-1] 'изменить исходный объект, но' for a in a: 'просто изменить« объект итератора »? – zangw