2014-01-27 2 views
2

Я создал простую функцию для распаковки N элементов из итерабельного.python - недействительный синтаксис при использовании *

def drop_first_last(grades): 
    grades = first, *middle, last 
    return avg(middle) 

При запуске этой функции произошла следующая ошибка:

grades = first, *middle, last 

SyntaxError: invalid syntax 

Я не знаю, почему эта ошибка произошла, как это исправить?

+1

Возможно, удалить '*'? – Nico

+4

Я думаю, что ваше задание назад. Вы назначаете классы, не используя оценки для получения значений. – thegrinner

ответ

7

Вобще:

middle = grades[1:-1] 
return avg(middle)  
+1

в python 3 вы можете сделать 'first, * middle, last = grades', но вопрос python2.7, поэтому ответ правильный –

0

Причина ошибки заключается в том, что это не синтаксис Python! Обозначение * используется для объявления переменных чисел аргументов и для распаковки кортежей. Вы пытаетесь использовать его, чтобы сделать что-то вроде pattern matching, найденного на функциональных языках, таких как Haskell. Плюс назначение - назад, как отметил @ thegrinner.

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