我对 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循环时有例外吗?
循环没有什么特别的。每次迭代所做的第一件事是将
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