如何通过存储数组名的变量更新已存在的Python数组?
问题分析与解决方法
问题根源
你犯了两个关键错误:
- 把
appointment赋值为字符串'J2',这个字符串只是文本内容,和你定义的J2数组没有任何关联,两者是完全独立的对象。 - Python的字符串是不可变类型,执行
appointment[time] = 6时会直接抛出TypeError,根本无法完成赋值操作,更别说影响数组了。
解决方案
方案1:直接让变量引用数组(推荐)
让appointment直接指向J2数组对象,这样操作appointment就等同于操作J2:
J2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] appointment = J2 # 让appointment引用J2数组 time = 3 appointment[time] = 6 # 此时修改的就是J2数组的索引3位置 print(J2) # 输出会看到索引3的值变为6
原理:Python中变量存储的是对象的引用,appointment = J2后,两个变量指向同一个数组对象,修改任意一个都会影响原数组。
方案2:通过变量名字符串操作(不推荐)
如果因为特殊需求必须用字符串存储变量名,可以通过globals()(全局命名空间)或locals()(局部命名空间)来获取数组对象,但这种写法可读性差,容易引发bug,仅作参考:
J2 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] appointment = 'J2' time = 3 globals()[appointment][time] = 6 # 从全局空间中取出名为'J2'的数组并修改 print(J2)
内容的提问来源于stack exchange,提问作者Chrles
相关产品推荐
相关产品推荐

