joh*_*hon 3 python variables list
这是我在使用python编程时遇到的一个严重问题。用户可以将各种变量附加到列表中,但是此列表在稍后访问时仍将显示与首次分配时相同的结果。例如下面
a=1
b=2
list = [a,b] #user defined order
print list # 1,2
a=2
print list # prints 1,2
Run Code Online (Sandbox Code Playgroud)
我需要列表以打印出2,2。但是我找不到一种动态更新列表以适应任何顺序的变量的方法(许多方法都是我在网上看到的硬编码,例如在需要更新时分配list = [a,b],但是我不知道是否其b,a或a,b)
帮助将不胜感激。谢谢
编辑:我的问题是不同的,因为关于变量,需要在列表中动态更新而不是简单地更改列表项。
您需要更新列表,而不是变量:
a = 1
b = 2
lst = [a, b] # the list now stores the references a and b point to
# changing a later on has no effect on this!
lst[0] = 2
Run Code Online (Sandbox Code Playgroud)
并且请不要list用作变量名!这是python中的关键字内置类型,覆盖它是一个非常糟糕的主意!
如果您只知道列表中元素的值(并且该值是唯一的),则可以执行以下操作:
old_val = 2
new_val = 3
lst[lst.index(old_val)] = new_val
Run Code Online (Sandbox Code Playgroud)
如果将不可变项存储在列表中(Python 整数就是这样),则不可能,因此添加间接级别并使用可变列表:
a,b,c,d = [1],[2],[3],[4]
L = [d,b,a,c] # user-defined order
print L
a[0] = 5
print L
Run Code Online (Sandbox Code Playgroud)
输出:
[[4], [2], [1], [3]]
[[4], [2], [5], [3]]
Run Code Online (Sandbox Code Playgroud)
然而,这有XY Problem的感觉。描述您正在使用此解决方案解决的问题可能会引出更好的解决方案。
| 归档时间: |
|
| 查看次数: |
4190 次 |
| 最近记录: |