2017-04-06 217 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