1

这个问题只是出于普遍的好奇。我刚刚在处理我当前的项目时注意到它(令人惊讶的是我在今天之前没有遇到过)。

拿这个代码:

List = ["hi","stack","over","flow","how","you","doing"]
del List(len(List)-1)

错误:

SyntaxError: can't delete function call

我不明白为什么不允许您通过引用对函数的调用来删除列表的索引?我是闭嘴接受你做不到还是我做错了什么?

如果对此有一个简单的答案,我深表歉意,但要么谷歌的帮助越来越少,要么这太明显了,我需要帮助。

4

3 回答 3

13

您的意思是删除列表的最后一个元素,而不是List作为函数调用:

del List[len(List)-1]

Python 的del语句必须采用特定的形式,例如删除变量、list[element] 或 object.property。这些形式可以嵌套很深,但必须遵循。它与赋值语句平行——如果你尝试赋值给一个函数调用,你会得到一个类似的语法错误。

当然,在这种情况下你真正想要的是

del List[-1]

这意味着列表的最后一个元素,并且更加 Pythonic。

于 2009-10-08T10:23:16.580 回答
5

List()当您应该索引列表时,您正在调用一个函数, List[].

在 Python 中,圆括号 ,()用于调用函数,而方括号[]用于索引列表和其他序列。

尝试:

del List[len(List) - 1]

甚至更好的是,使用 Python 允许从末尾开始计数的负索引这一事实:

del List[-1]

此外,为清楚起见,您可能希望列表的名称与内置list类型名称不太接近。

于 2009-10-08T10:21:37.817 回答
1

你被允许。但是,您使用了错误的语法。正确的语法是:

del List[-1]

请注意,“len(List)”部分是无用的。

于 2009-10-08T10:23:55.070 回答