这里有几个列表:a、b 等我想分别对它们进行一些更改,但我对 for 循环的行为感到困惑。
例如:如果我们这样做
a, b = range(5), range(5,10)
for x in [a, b]: x += [0]
print(a,b)
我们得到
([0, 1, 2, 3, 4, 0], [5, 6, 7, 8, 9, 0])
a,b 被修改。
但如果我们这样做
a, b = range(5), range(5,10)
for x in [a, b]: x = x + [0]
print(a,b)
我们得到
([0, 1, 2, 3, 4], [5, 6, 7, 8, 9])
a,b 未修改。我很困惑,x和a之间有什么关系?何时或如何使用 x 修改 a 的值?顺便问一下,a+=b 和 a=a+b 有什么区别?
无论如何,我找到了一个我们可以这样做的解决方案
a, b = range(5), range(5,10)
lis = [a, b]
for i, x in enumerate(lis):
lis[i] = ...
然后我们可以修改 a & b 的值。但是这种方法需要做一个额外的列表。
还有另一种解决方案
for x in ['a', 'b']:
exec(x + '=' + x + '+ ...')
还有一个更简单的解决方案
a, b = range(5), range(5,10)
for x in [a, b]: x[:] = x + [0]
print(a,b)
我们会发现 a,b 被修改了:)