我需要帮助来了解Python中的“列表”关键字问题

时间:2019-07-19 02:35:01

标签: python

我正在为此撕掉我的头发。我有以下说法:

list = []

list在IDE中为另一种颜色,表示它是关键字。我在网上看到了作为关键字的引用。但是,所有示例都将list在语句中的位置视为一个简单的用户分配名称(例如“ my_list”或类似名称)。我试图摆脱代码中的一堆不必要的垃圾,但是如果我删除了后面的del语句,则随后使用名称list会使程序崩溃。如果我将del重新放回原处,它将起作用。如果这是一个简单的赋值语句,那么无论del的存在如何,我都希望随后的赋值将替换先前的赋值。

为了使事情复杂化,后面的参考文献像模块一样谈论list(即list()。如果我尝试将第一个参考文献的名称更改为list1 = []的实际用法),该结构失败为“不可迭代”。

抱歉,这是无人驾驶飞机,但这对我来说没有意义。

继续: 前几个语句是:

list = []
p = 129
for loop in range(1, math.ceil(len(files)/4) + 1):
list.append(p)
p = p + 140

循环结束后: 删除列表。

稍后:

WOW_time_1 = list(fti.loc[:
'NLG Wow(takeo0ff)'].dropna()). . .

我希望第一条语句(列表= [])正在定义结构。在那种情况下,我认为应该使用用户定义的名称,但稍后会使用“ append”方法。然后,在del之后,无需任何声明即可再次使用它。如果它是一个始终可用的关键字,我不明白为什么首先要声明它,为什么我必须删除它才能使第二个引用起作用。

哦,为了记录,我正在调试它,而不是编写它。 :-)

1 个答案:

答案 0 :(得分:-1)

在您正在阅读的代码中,list这个名称被用于两种不同的事物。

让我们从第二种用法开始,因为这是更普通的一种。当代码执行list(...)时,它会调用名为list的内置类型,该类型将构建一个列表对象,并使用传递给它的iterable参数中的值填充它。尽管您可能不会经常直接调用list(因为您可以使用文字语法构建列表,例如[1, 2, 3]),但您可能已经多次使用过这种类型。

文件中较早的list的另一个用法是作为变量。这样做是合法的,但是通常将内置名称用于您的目的被认为是不好的代码样式。当您对内建名称进行分配时,内建将在当前名称空间中被遮盖,因此您无法轻松访问常规值。您显示给我们的代码将一个空列表对象(内置list类的实例,尽管它是用文字[]创建的,但比等效的list()评级)绑定到名称{ {1}},然后用各种数字填充它。

在不再需要该变量之后,代码将调用list,该变量将从本地名称空间中删除该变量,从而结束了内置类型的阴影。这可能是先前对该代码进行调试的结果,因为隐藏del list内置函数可能会破坏后面的代码。更好的解决方法是将上面的代码更改为使用不同的变量名,并首先避免出现阴影。

对于为什么总是突出显示list的原因,您的代码编辑器可能知道list是内置名称。因此,即使在该特定时刻实际上并没有指向内置类型,它也会在使用的所有位置突出显示该名称。当您隐藏内置名称时,某些在代码上运行样式检查程序的编辑器可能会向您发出警告。

也许值得注意的是list不是Python中的关键字。您可能会注意到,对于关键字的名称,突出显示的内容有所不同,例如listTrueFalse(它们也都指向内置对象),但是可能是编辑者选择对所有颜色使用相同的颜色。对于非对象关键字,例如Noneif,很有可能使用其他颜色。您无法分配任何关键字,因此forTrue = 0等将给您带来错误。