for 循环中是否可以有一个与循环头中的变量完全相同的变量?

问题描述 投票:0回答:1

我对 for 循环代码块内的赋值语句有点困惑。

示例代码:

my_list = ['1', '2', '3', '4']

my_new_list = []
for element in my_list:
    element = int(element) ** 2
    my_new_list.append(str(element))
print(my_new_list)

基本上,我很难从上面的代码中理解这个赋值语句:

element = int(element) ** 2

我知道

=
右侧的表达式首先被求值,然后将其分配给
=
左侧的变量。但我了解到,通过使用 for 循环,循环头中的变量(此处为
element
)被逐步分配给可迭代的每个值(此处为
my_list
)。

所以我的大脑基本上看到了这些语句(我知道这些语句在语法上是错误的,因为你不能为字符串文字赋值):

'1' = int('1') ** 2

'2' = int('2') ** 2

'3' = int('3') ** 2

'4' = int('4') ** 2

但是,当我通过 Python Visualizer 运行上述代码时,它显示一切都很好,并且变量

element
分别被分配了值
1
4
9
16

这怎么可能?在Python中使用for循环时有例外吗?

python loops variable-assignment
1个回答
0
投票

循环没有什么特别的。每次迭代所做的第一件事是将

my_list
中的值分配给变量
element
。然后,您只需根据旧值将 new 值分配给元素即可。迭代完成后,循环再次将另一个值从
my_list
分配给
element

展开循环

my_new_list = []
for element in my_list:
    element = int(element) ** 2
    my_new_list.append(str(element))

会给你类似的东西

my_new_list = []
itr = iter(my_list)
element = next(itr)  # '1'
element = int(element) ** 2
my_new_list.append(str(element))
element = next(itr)  # '2'
element = int(element) ** 2
my_new_list.append(str(element))
element = next(itr)  # '3'
# etc
© www.soinside.com 2019 - 2024. All rights reserved.