【问题标题】:Update a list from a function in Python从 Python 中的函数更新列表
【发布时间】:2021-09-22 13:03:45
【问题描述】:

我想更新一个在函数外部定义的列表,如下所示:

import pandas as pd

list1=[]
list2=[]
list3=[]

def updatelist():
     list1=['one','two','three']
     list2=['1','2','3']
     list3=['4','5','6']

df1=pd.DataFrame(list1)
df2=pd.DataFrame(list2)
df3=pd.DataFrame(list3)

当我尝试打印列表时,我看到的是空列表。该函数不更新列表值。

注意:定义执行某些计算来更新列表,并且不能在定义之外完成。

感谢任何帮助。提前致谢。

【问题讨论】:

  • 你从来没有打电话给updatelist
  • 您分配给局部变量,而不是全局变量。
  • 函数的第一行写global list1, list2, list3。这将对全局变量进行后续分配,而不是创建新的局部变量。
  • 更好地使用return list1, list2, list3 和更高版本的list1, list2, list3 = updatelist()

标签: python list function definition


【解决方案1】:

您需要在函数中将列表指定为全局

list1 = []
list2 = []
list3 = []

def updatelist():
     global list1
     global list2
     global list3
     list1=['one','two','three']
     list2=['1','2','3']
     list3=['4','5','6']

updatelist() # Function is modifying your lists outside i.e globally

如果你这样做了

print(list1, list2, list3)

你会得到

['one','two','three'] ['1','2','3'] ['4','5','6']

【讨论】:

    【解决方案2】:

    如下更新您的代码,

    import pandas as pd
    
    list1=[]
    list2=[]
    list3=[]
    
    def updatelist():
        global list1,list2,list3
        list1=['one','two','three']
        list2=['1','2','3']
        list3=['4','5','6']
    
    
    updatelist()
    df1=pd.DataFrame(list1)
    df2=pd.DataFrame(list2)
    df3=pd.DataFrame(list3)
    

    在从方法访问它们之前,您需要将列表变量定义为全局变量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      相关资源
      最近更新 更多