for 循环中的赋值
Assignments in for loops
这是我想在已经讨论过的问题之上提出的问题:
Assigning values to variables in a list using a loop
所以上面的link说不建议在for循环中执行赋值,因为这样做只会改变那些值的引用,不会改变原始变量。
例如,如果我想给每个变量加1:
p = 1
q = 2
r = 3
a = [p,q,r]
for i in a:
i += 1
print(p, q, r)
# returns 1 2 3
所以这不会改变 p、q 和 r,因为加一的值分配给了 'i'。我向一些人询问了这个问题的可能解决方案,有人建议我尝试使用 'enumerate' 函数。所以我做了:
p = 1
q = 2
r = 3
a = [p,q,r]
for idx, val in enumerate(a):
a[idx] = val + 1
print(p, q, r)
# returns 1 2 3
所以还是不行。打印列表 'a' 确实 return 值列表加 1,但它仍然不会更改分配给 p、q 和 r 的值,这正是我想要的。
所以我目前唯一的解决办法是手动为每个变量赋值:
p = 1
q = 2
r = 3
p += 1
q += 1
r += 1
print(p, q, r)
# returns 2 3 4
但是,在涉及的变量多于 3 个的假设设置中,例如我希望为每个分配的值加 1 的 50 个变量,手动执行将非常费力。
所以我的问题是,有没有不用手动操作的解决方案?我们如何使用 for 循环来实现这一点?或者,如果 for 循环不适用于这种情况,还有其他方法吗?
您可以维护一个字典,其中的键是字符串(您最初拥有的名称变量),值是它们被分配给的整数。
然后,您可以进行以下操作:
data = {
"p": 1,
"q": 2,
"r": 3
}
for item in data:
data[item] += 1
print(data)
这输出:
{'p': 2, 'q': 3, 'r': 4}
这是我想在已经讨论过的问题之上提出的问题:
Assigning values to variables in a list using a loop
所以上面的link说不建议在for循环中执行赋值,因为这样做只会改变那些值的引用,不会改变原始变量。
例如,如果我想给每个变量加1:
p = 1
q = 2
r = 3
a = [p,q,r]
for i in a:
i += 1
print(p, q, r)
# returns 1 2 3
所以这不会改变 p、q 和 r,因为加一的值分配给了 'i'。我向一些人询问了这个问题的可能解决方案,有人建议我尝试使用 'enumerate' 函数。所以我做了:
p = 1
q = 2
r = 3
a = [p,q,r]
for idx, val in enumerate(a):
a[idx] = val + 1
print(p, q, r)
# returns 1 2 3
所以还是不行。打印列表 'a' 确实 return 值列表加 1,但它仍然不会更改分配给 p、q 和 r 的值,这正是我想要的。
所以我目前唯一的解决办法是手动为每个变量赋值:
p = 1
q = 2
r = 3
p += 1
q += 1
r += 1
print(p, q, r)
# returns 2 3 4
但是,在涉及的变量多于 3 个的假设设置中,例如我希望为每个分配的值加 1 的 50 个变量,手动执行将非常费力。
所以我的问题是,有没有不用手动操作的解决方案?我们如何使用 for 循环来实现这一点?或者,如果 for 循环不适用于这种情况,还有其他方法吗?
您可以维护一个字典,其中的键是字符串(您最初拥有的名称变量),值是它们被分配给的整数。
然后,您可以进行以下操作:
data = {
"p": 1,
"q": 2,
"r": 3
}
for item in data:
data[item] += 1
print(data)
这输出:
{'p': 2, 'q': 3, 'r': 4}