【问题标题】:Appending to the list outside function in python not changing the list [closed]在python中附加到列表外部函数而不更改列表[关闭]
【发布时间】:2021-06-25 05:06:13
【问题描述】:
lst_val = []
def func():
    for value in any_list:
        global lst_val 
        lst_val .append(value)  

我正在使用上面的代码将值附加到函数之外的列表中。但是,它仍然显示为空列表。如何修改函数中的列表?

【问题讨论】:

  • dict[] 是什么?如果它是dict(),那么循环将不会运行,因为它是空字典。你也在调用这个函数吗?
  • 请提供可重现的代码,我们可以运行和检查,这样更容易判断问题。
  • 你有没有调用函数func()
  • 附带说明,您应该调用lst_val.extend(any_list) 来实现相同的目标。不需要循环。
  • 如果您对原始帖子进行了编辑,请注明以避免混淆。另外,请说明您的问题是否已经解决。

标签: python python-3.x list global


【解决方案1】:

您只需要不带方括号的 any_list。如果你调用这个函数,我相信你会得到一个语法错误。

【讨论】:

  • 编辑了问题。谢谢!
【解决方案2】:

试试下面的代码。

lst_val = []
class Sample:
def func(any_list):
    global lst_val
    for value in any_list:
        lst_val.append(value)

    return lst_val


Sample.func([1, 2, 3, 4])
print(lst_val)

【讨论】:

  • 你为什么要添加一个毫无意义的类...Sample(语法不正确,顺便说一句)
【解决方案3】:

问题似乎是函数没有返回任何内容,这就是为什么你得到“无”试试这个:

dict1 = [1,2,3]

lst_val = []

def func():
        for value in dict1:
            global lst_val
            lst_val.append(value)
    return lst_val

print(func())
print(lst_val)

// func()  returns: [1, 2, 3]
// lst_val returns: [1, 2, 3]

【讨论】:

  • 不需要返回全局变量。 OP 的问题在别处。
  • 即使是这样,让我们​​完全忽略这样一个事实,即它产生了预期的结果,并且 OP 可以在需要时将其取出。
  • OP 的代码已经 产生了预期的结果。此外,OP 没有提及None,而是提到该列表仍然是空的。
  • 打印 func() 的结果返回 None 这是我得到的,我看到@DYZ 指出这很可能是由于没有调用对我有用的函数所以我错了。
  • 感谢您的回答!它奏效了。
猜你喜欢
  • 2013-04-14
  • 2021-11-09
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-01
  • 2020-05-01
  • 1970-01-01
相关资源
最近更新 更多