我正在寻找一种方法,以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
我正在寻找一种方法,以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
您最初的代码不起作用,因为设置的“我”不实际设置的变量“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)
使用'list'作为变量名掩盖内置函数。 – zondo
你不明白,我不认为代码会真正起作用,我只是用它来展示我想要做的事情。 @ dimab0 – user36456453765745
我意识到你知道你的代码不起作用。这是否解决你的意图? – dimab0
由于在原来的问题指出了意见,这闻起来并且您可能想要考虑解决实际问题的不同方式。话虽这么说,这里是你如何完成你想做什么:
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
如果这确实是必要的,那么答案是'exec',但很可能你不需要这个。你为什么想这样做? – zondo
不会发生。 '[a,b,c,d]'等于'[“original”,“original”,“original”,“original”]'。它没有记忆变量'a','b','c'和'd'。无论如何,你为什么要这么做?这闻起来像一个[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –
我想你应该详细说一下_why_你想要这个。鉴于你迄今为止所展示的内容,我很想说python是不可能的,因为字符串是不可变的,python对象不知道它们绑定了什么名字...... – mgilson