2017-04-06 205 views
-2

我正在尋找一種方法,以for迴路列表迭代才能通過的變量列表進行迭代,並能夠利用它們作爲這樣的變量:for循環的變量

>>> a = "original" 
>>> b = "original" 
>>> c = "original" 
>>> d = "original" 
>>> for i in [a,b,c,d]: 
     i = "change" 
>>> print(a,b,c,d) 
change change change change 
+0

如果這確實是必要的,那麼答案是'exec',但很可能你不需要這個。你爲什麼想這樣做? – zondo

+0

不會發生。 '[a,b,c,d]'等於'[「original」,「original」,「original」,「original」]'。它沒有記憶變量'a','b','c'和'd'。無論如何,你爲什麼要這麼做?這聞起來像一個[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –

+0

我想你應該詳細說一下_why_你想要這個。鑑於你迄今爲止所展示的內容,我很想說python是不可能的,因爲字符串是不可變的,python對象不知道它們綁定了什麼名字...... – mgilson

回答

1

您最初的代碼不起作用,因爲設置的「我」不實際設置的變量「A」的值,「b」的值,等

a = "original" 
b = "original" 
c = "original" 
d = "original" 
list = [a,b,c,d] 
for i in range(0,len(list)): 
    list[i] = "change" 
print(list) 
+0

使用'list'作爲變量名掩蓋內置函數。 – zondo

+0

你不明白,我不認爲代碼會真正起作用,我只是用它來展示我想要做的事情。 @ dimab0 – user36456453765745

+0

我意識到你知道你的代碼不起作用。這是否解決你的意圖? – dimab0

0

由於在原來的問題指出了意見,這聞起來並且您可能想要考慮解決實際問題的不同方式。話雖這麼說,這裏是你如何完成你想做什麼:

a = "original" 
b = "original" 
c = "original" 
d = "original" 
l = [a, b, c, d] 

for idx, val in enumerate(l): 
    l[idx] = "change" 

print(l) 

這導致:

['change', 'change']

注意print(a)仍然會導致original作爲Python strings are immutable