当我有一个 for 循环时:
for row in list:
row = something_or_other
似乎有时我可以直接给row赋值(或追加/扩展等)并且list相应地改变,有时我必须做一些事情环形交叉路口像:
for row in list:
list[list.index(row)] = something_or_other
什么给了?!?
请您参考如下方法:
您永远不能像这样重新分配值 row(或者通常,无论您的迭代变量是什么):
x = [1, 2, 3]
for x in lst:
x = # code
因为这是完全重新分配变量 x(它说“忘记 x 是列表的成员”)。
但是,如果 x 是可变的,例如它是一个列表,您可以:
lst = [[1, 2], [3, 4]]
for x in lst:
x.append(10)
它实际上会更改值(到 [[1, 2, 10], [3, 4, 10]])。用技术术语来说,这是 rebinding and mutating operations 之间的区别。 .
