无法删除函数调用

时间:2009-10-08 10:19:22

标签: python syntax-error

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

拿这段代码:

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

错误:

SyntaxError: can't delete function call

我不明白为什么不允许您通过引用对函数的调用来删除列表的索引?我只是闭嘴并接受你做不到或者我做了一些根本错误的事情吗?

我很抱歉,如果有一个简单的答案,但谷歌的帮助不大,或者这显然是显而易见的,我需要帮助。

3 个答案:

答案 0 :(得分:12)

你的意思是删除列表的最后一个元素,而不是以某种方式调用List作为函数:

del List[len(List)-1]

Python的del语句必须采用特定形式,如删除变量,列表[element]或object.property。这些表单可以深层嵌套,但必须遵循。它与赋值语句相似 - 如果您尝试分配函数调用,则会出现类似的语法错误。

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

del List[-1]

表示列表的最后一个元素,更像是Pythonic。

答案 1 :(得分:5)

当您要为列表编制索引List()时,您正在调用函数List[]

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

尝试:

del List[len(List) - 1]

甚至更好,使用Python允许负数索引的事实,从最后开始计算:

del List[-1]

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

答案 2 :(得分:1)

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

del List[-1]

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