如何在python中定义一个全局列表并将本地列表附加到它

Posted

技术标签:

【中文标题】如何在python中定义一个全局列表并将本地列表附加到它【英文标题】:How to define a global list in python and append local list to it 【发布时间】:2017-11-22 13:15:24 【问题描述】:

我想定义一个全局列表并向其附加一个列表。我得到了一些点击事件的列表(i [0])并将其附加到mnum_list。现在我想创建一个全局列表并将该 mnum_list 附加到它。知道怎么做吗?

def OnClick(self, event):                                       
    name = event.GetEventObject().GetLabelText()
    cursor= self.conn.execute("SELECT * FROM ELEMENT where SYMBOL==?", (name,))
    elements = cursor.fetchall()
    print elements
    cursor= self.conn.execute("SELECT ATOMIC_NUMBER FROM ELEMENT where SYMBOL = ?", (name,))
    numbers = cursor.fetchone()[0]
    print numbers
    atomicnumber = numbers
    cursor= self.conn.execute("SELECT MOL_NUMBER FROM LINK where ELEMENT_NUMBER = ?", (atomicnumber,))
    mnumbers = cursor.fetchall()
    print mnumbers
    mnum_list = []
    for i in mnumbers:
         mnum_list.append(i[0])
    print mnum_list

【问题讨论】:

Using global variables in a function other than the one that created them的可能重复 附带说明:我个人认为全局变量是设计缺陷,如果可能的话,我会不惜一切代价避免它们。 @mpf82 不,您的评论好像全局变量本质上是错误的;他们不是。全局变量有完全有效的用例,例如“常量”值。当您开始尝试使用全局变量作为状态时,您开始获得意大利面条代码。 @mpf82:OP 正在尝试操纵全局。他们可以这样做,而不必知道如何使用global,因为没有分配给全局名称 如果你有一个全局列表(some_global_list = [] 在模块级别),那么只需引用它以附加到它:some_global_list.append(mnum_list)。改变一个全局变量就是这么简单。 【参考方案1】:

global语句中如果没有赋值就不需要了,只是:

def foo(x):
    sublist = range(x)
    glist.append(sublist)

在延期的情况下:

def foo(x):
    sublist = range(x)
    glist.extend(sublist)

【讨论】:

修改全局对象不涉及赋值,因此global glist 行完全是多余的。扩展不需要需要+=,只需使用glist.extend()(而+=需要需要global语句)。 对,感觉它只是简单地完成工作。 对不起,我是新手!这里的子列表是 mnum_list ? 不,它不工作!当我打印 glist 时,它没有给我任何输出 pastebin.com/fV9CZQd6【参考方案2】:

您可以在文件/模块级别声明它,例如: my_global_list = list()

当你想在函数中附加它时,你可以使用 global 关键字。 global 关键字告诉 python 寻找全局变量。

全局 my_global_list

my_global_list.append()

【讨论】:

您确实不需要在改变对象时需要使用global。仅在分配给全局名称时才需要。 这有效,但没有解决我的问题!谢谢,我要问另一个问题

以上是关于如何在python中定义一个全局列表并将本地列表附加到它的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 Python 中使用前置元素而不是附加来扩展列表吗?

在Android中如何使用全局变量

Python:将关键字保存在列表中并将另一个列表添加到其中的单个单词中[关闭]

2021-09-24——大数据学习日志——Python——容器类型(附练习题)

python-写函数,获取传入列表的所有奇数位索引对应的元素,并将其作为新列表返回。

如何在python中更新全局变量