Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 按变量名访问列表的元素_Python 3.x - Fatal编程技术网

Python 3.x 按变量名访问列表的元素

Python 3.x 按变量名访问列表的元素,python-3.x,Python 3.x,如何使用列表的名称访问列表元素 我想让用户编辑代码,以确定一个单一的变量输入到一个函数。例如: blah = [1,2] blah2 = 5 toBeChanged = "blah2" def foo(): print(blah) def changeVariable(): globals()[toBeChanged] += 1 for time in range(5): changeVariable() simulate 这适用于blah

如何使用列表的名称访问列表元素

我想让用户编辑代码,以确定一个单一的变量输入到一个函数。例如:

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],因为它是列表的一部分。我也尝试过像其他答案所建议的那样将变量放入字典,但我仍然无法通过简单的字符串更改列表元素


有没有一种方法是我所缺少的?谢谢

与其使用
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()  

这还有一个额外的优点,即如果用户输入一个不存在的变量,则会选择默认值,并且不会覆盖任何对将来执行可能很重要的变量。

这几乎就是我想要的,但是当运行时我收到一个类型错误,只能将list(而不是int)连接到list。当.get(toBeChanged,0)访问适当的元素时,我无法重新评估它,因为它是一个函数,有没有办法解决这个问题?谢谢您希望
[1,2]+=1
的结果是什么?这就是为什么我在寻找更改列表中单个元素的方法。例如,我想通过将blah[0]增加1来更改它,而不是整个列表。这个想法似乎不是个好主意。使用字典并测试对象类型是做你想做的事情的方法,但这似乎是个坏主意。你介意更详细地解释一下为什么这是个坏主意吗?谢谢因为在这种情况下,它不是自然的Python代码。如果您将一个元组、一个集合或一个dict传递给此函数,该怎么办?什么是
集([1,2])+=1
?什么是
(1,2)+=1
?您是说您想要一个支持列表的函数和任何其他支持
+=
的函数吗?浮动一串您正在编写不灵活的代码,这可能是为了解决您对所看到的问题缺乏理解的问题。Python中的强类型是有原因的。