如何在python中更新变量列表?

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)

帮助将不胜感激。谢谢

编辑:我的问题是不同的,因为关于变量,需要在列表中动态更新而不是简单地更改列表项。

hir*_*ist 5

您需要更新列表,而不是变量:

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)


Mar*_*nen 4

如果将不可变项存储在列表中(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的感觉。描述您正在使用此解决方案解决的问题可能会引出更好的解决方案。