这个问题只是出于普遍的好奇心。在我目前的项目工作时我才注意到它(令人惊讶的是,我今天之前没有遇到过)。
拿这段代码:
List = ["hi","stack","over","flow","how","you","doing"]
del List(len(List)-1)
错误:
SyntaxError: can't delete function call
我不明白为什么不允许您通过引用对函数的调用来删除列表的索引?我只是闭嘴并接受你做不到或者我做了一些根本错误的事情吗?
我很抱歉,如果有一个简单的答案,但谷歌的帮助不大,或者这显然是显而易见的,我需要帮助。
答案 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)部分无用。