2015-02-18 1 views
0

Я пытаюсь определить функцию, которая возвращает список без первого и последнего элементов в этом списке. Однако я получаю это при запуске функции: «Объект TypeError: 'builtin_function_or_method' не поддерживает удаление элемента».TypeError с функциями

Это мой код до сих пор:

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

Как вы называете свою «среднюю» функцию? –

+0

не уверен, что вы подразумеваете под «вызовом» ... – holaprofesor

+2

Что вы ожидаете от 'input'? Параметр функции называется 't'. – jonrsharpe

ответ

6

t=input назначает t объекту функции input. Вы не можете нарезать функцию. t[1:-1] вернет новый список, удалив первый и последний элементы.

1

Если бы я тебя, я бы с чем-то вроде

themiddlevalues = t[1:-1] 

Это работает на какой-либо последовательности, и не требует функции. Это, вероятно, стоит узнать о ломтике питоной нотации, так как кусочки имеют важные значение для Numpy и т.д. См http://codingbat.com/doc/python-strings.html, так как кусочки работают точно так же через строку, списки и т.д.

2

Вы должны удалить t = input линии; это назначение t встроенной функции input, которая не является массивом и не является тем, что вы хотите. После того, как вы сделаете это, вы можете использовать:

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], как я предполагаю, что вы хотели.

Смежные вопросы