如何在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 中使用前置元素而不是附加来扩展列表吗?
Python:将关键字保存在列表中并将另一个列表添加到其中的单个单词中[关闭]
2021-09-24——大数据学习日志——Python——容器类型(附练习题)