這是我想在已經討論過的問題之上提出的問題:
使用回圈為串列中的變數賦值
所以上面的鏈接說不建議在 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”。我詢問了一些人有關此問題的可能解決方案,有人建議我嘗試“列舉”功能。所以我做了:
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”確實回傳了加 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 個的假設設定中,例如 50 個變數,我希望在分配的每個值上加 1,手動執行將非常苛刻。
所以我的問題是,有沒有辦法解決這個問題而無需手動操作?我們如何使用for回圈來實作這一點?或者,如果 for 回圈不適用于這種情況,還有其他方法嗎?
uj5u.com熱心網友回復:
您可以維護一個字典,其中鍵是字串(您最初擁有的名稱變數),值是分配給它們的整數。
然后,您可以執行以下操作:
data = {
"p": 1,
"q": 2,
"r": 3
}
for item in data:
data[item] = 1
print(data)
這輸出:
{'p': 2, 'q': 3, 'r': 4}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/449385.html
