python遍历循环赋值给不同变量_for循环中的Python变量赋值

这里最重要的是变量名。它们真的只是字典的钥匙。它们在运行时解析,具体取决于当前作用域。

让我们看看您在代码中访问的名称。locals函数帮助我们:它显示本地作用域中的名称(及其值)。这是您的代码,带有一些调试输出:a = [1, 2, 3] # a is bound

print(locals())

for x in a: # a is read, and for each iteration x is bound

x = x + 3 # x is read, the value increased and then bound to x again

print(locals())

print(locals())

print(x)

(注意,我将x += 3扩展到x = x + 3,以增加名称访问(读和写)的可见性。)

首先,将列表[1, 2, 3]绑定到名称a。然后,遍历列表。在每次迭代期间,该值都绑定到当前作用域中的名称x。然后,赋值将另一个值赋给x。

这是输出{'a': [1, 2, 3]}

{'a': [1, 2, 3], 'x': 4}

{'a': [1, 2, 3], 'x': 5}

{'a': [1, 2, 3], 'x': 6}

{'a': [1, 2, 3], 'x': 6}

6

在任何时候,您都不能访问列表a,因此永远不会修改它。

为了解决您的问题,我将使用枚举函数获取索引和值,然后使用名称a访问列表来更改它。for idx, x in enumerate(a):

a[idx] = x + 3

print(a)

输出:[4, 5, 6]

注意,您可能希望将这些示例包装在函数中,以避免全局命名空间混乱。

有关作用域的详细信息,请阅读chapter in the Python tutorial。要进一步研究这个问题,请使用globals函数查看全局命名空间的名称。(不要与global关键字混淆,请注意缺少的“s”。)

玩得开心!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值