в python, когда вы делаете
for x in y:
pass#your code here
x
определяется вне цикла for, и вы можете использовать его как обычную переменную после завершения цикла
, если вы это сделаетечто-то вроде
for a in range(10):
pass
print(a)
будет напечатано 9
, поскольку это последнее значение a
было внутри цикла.
для конкретного случая, в котором оба итерируемы (список)и переменная, используемая для итерации по ней, именуется одинаково, как вы можете видеть a
изменения для каждого значения, а затем остается последним значением, как я уже упоминал.
тогда, когда вы запускаете его во второй раз, a
- это просто целое число, а не список, и поэтому его нельзя повторять.
, если вы хотите знать, почему циклы не работаютпрерывание после первой итерации (так как a
не является исходным списком после первой итерации), это потому, что исходный список все еще находится в памяти, пока цикл не завершится, он просто не адресуется по имени, после окончания цикла он будет полностью удалениз памяти