如何使用列表名称访问列表元素?
我想允许用户编辑代码以确定要输入到函数中的单个变量。例如:
blah = [1,2]
blah2 = 5
toBeChanged = "blah2"
def foo():
print(blah)
def changeVariable():
globals()[toBeChanged] += 1
for time in range(5):
changeVariable()
simulate
这适用于blah2,因为它是一个简单的变量,但它不适用于blah [0],因为它是列表的一部分。我也尝试将我的变量放入字典中,如其他答案所示,但我仍然无法通过简单的字符串更改列表元素。
有没有办法让我失踪?谢谢!
答案 0 :(得分:2)
使用字典存储您希望用户更改的变量,而不是使用globals()
并直接更改它会更好,然后操纵它:
my_variables = {
'blah': [1,2]
'blah2': 5
}
toBeChanged = "blah2"
def foo():
print(my_variables['blah'])
def changeVariable():
my_variables[toBeChanged] = my_variables.get(toBeChanged,0) + 1
for time in range(5):
changeVariable()
这样做的另一个好处是,如果用户输入的数据不存在,则选择默认值,并且不会覆盖对将来执行可能很重要的任何变量。