我有两个变量如下:
a = "1"
b = "21"
和一个清单:
['a', 'b', '3', '4', '5', '64']
如何使用列表中的值替换变量名称,例如:
['1', '21', '3', '4', '5', '64']
答案 0 :(得分:4)
我猜你并不是说你只需要提供变量的名称,而不是字符串?
你可以做一个“怪物”,例如:
a = '1'
b = '21'
els = ['a', 'b', '3', '4', '5', '64']
print [vars().get(el, el) for el in els]
# ['1', '21', '3', '4', '5', '64']
但是如果你处于这样的情况,或者想要这样做的话 - 是时候重新思考了
答案 1 :(得分:1)
首先构建一个查找字典?
lookup = {'a':'1', 'b':'21'}
然后你很高兴:
print [lookup[x] if x in lookup else x for x in c ]
['1', '21', '3', '4', '5', '64']
答案 2 :(得分:0)
您只需删除引号:
a = "1"
b = "21"
[a, b, "3", "4", "5", "64"]
输出为["1", "21", "3", "4", "5", "64"]
答案 3 :(得分:0)
作为其他答案的替代方法,如果变量名称必须作为列表中的字符串存在,则可以使用eval
。对于您的示例,以下代码:
eval(list[0])
将评估为1(提供list
是列表的变量)。
你必须要小心,因为如果变量不存在,它将抛出NameError
,如果你没有传递一个字符串,字节或代码对象,它将抛出一个{{1 }}