TypeError与函数

时间:2015-02-18 21:51:36

标签: python python-3.x

我正在尝试定义一个函数,该函数返回没有该列表中第一个和最后一个项的列表。但是,当我运行该函数时,我得到了这个:" 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)

感谢任何帮助。

3 个答案:

答案 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,因为切片在字符串,列表等方面的工作方式相同。