【问题标题】:Change variable value for each variable in list更改列表中每个变量的变量值
【发布时间】:2019-03-25 16:17:03
【问题描述】:

假设我们有一个列表variables,其中包含变量[a, b, c]。代码应检查变量值是否为带有文本"None" 的字符串类型。如果为真,变量值应更新为""。使用 for 循环,我会写:

a = 1
b = 2
c = 3
variables = [a, b, c]

for i in range(len(variables)):
    variables[i] = 55

print(variables)
print(a, b, c)

这个输出:

[55, 55, 55]
1 2 3

为什么变量不更新它们的值?

【问题讨论】:

  • 您没有变量列表。您有一个列表。阅读nedbatchelder.com/text/names.html
  • 您需要更新列表本身,而不是列表的单个项目。
  • 相关(基本上是相反的问题):How to update a list of variables in python?
  • @deceze 这些重复项肯定解决了 OP 的问题,但它们无法解释为什么 OP 的代码不起作用。 OP专门询问为什么代码不起作用。我认为这应该重新开放。 (我试图找到更好的副本,但找不到。)
  • @deceze 对我重新提出问题有异议吗?

标签: python python-3.x list for-loop


【解决方案1】:

您所做的只是覆盖局部变量variable 的值,而不是variables 中的元素。您需要遍历索引并直接分配给variables[i]

for i, value in enumerate(variables):
    if value == "None":
        variables[i] = ""

【讨论】:

    【解决方案2】:

    如果我重现您的示例,变量“变量”确实会更新。但是,变量列表中的“变量”不会。因为你没有告诉它改变。

    有几种方法可以改变这一点。如果这是一个小列表,我会简单地创建一个新列表

    variables = [1,2,3,4,"None",5,1,"foo","bar"]
    
    new_variables = [0 if variable == "None" else variable for variable in variables]
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2015-01-01
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多