我正在尝试定义一个函数,该函数返回没有该列表中第一个和最后一个项的列表。但是,当我运行该函数时,我得到了这个:" TypeError:' builtin_function_or_method'对象不支持项目删除"。
到目前为止,这是我的代码:
def middle(t):
"""returns a copy of a list with the first and last items removed
list -> list"""
t = input
del t[0]
del t[-1]
print(t)
感谢任何帮助。
答案 0 :(得分:6)
t=input
正在为函数对象t
分配input
。你不能切片功能。 t[1:-1]
将返回一个新列表,其中包含第一个和最后一个项目。
答案 1 :(得分:2)
您应该删除t = input
行;那就是为内置函数input
分配t,它不是一个数组而不是你想要的。完成后,您可以使用:
l = [0, 1, 2, 3, 4]
middle(l)
将离开l = [1, 2, 3]
。
然而,更好的方法就是说
l = [0, 1, 2, 3, 4]
l2 = l[1:-1]
这使l2成为[1, 2, 3]
,正如我假设你想要的那样。
答案 2 :(得分:1)
如果我是你,我会选择像
这样的东西themiddlevalues = t[1:-1]
这适用于任何类型的序列,并且不需要函数。关于python切片表示法可能值得学习,因为切片对numpy很重要,等等。请参阅http://codingbat.com/doc/python-strings.html,因为切片在字符串,列表等方面的工作方式相同。