Не удается удалить вызов функции - PullRequest
0 голосов
/ 08 октября 2009

Этот вопрос просто из общего любопытства. Я только заметил это, работая над моим текущим проектом (удивительно, я не сталкивался до сегодняшнего дня).

Возьмите этот код:

List = ["hi","stack","over","flow","how","you","doing"]
del List(len(List)-1)

Ошибка:

SyntaxError: can't delete function call

Я не понимаю, почему вы не можете удалить индекс списка, ссылаясь на вызов функции? Я просто замолкаю и признаю, что ты не можешь этого сделать, или я делаю что-то в корне неправильно?

Я прошу прощения, если есть простой ответ на это, но либо Google становится менее полезным, или это настолько очевидно, что мне нужна помощь.

Ответы [ 3 ]

12 голосов
/ 08 октября 2009

Вы имели в виду удалить последний элемент списка, а не как-то вызвать List как функцию:

del List[len(List)-1]

Инструкция Python del должна принимать конкретные формы, такие как удаление переменной, list [element] или object.property. Эти формы могут быть вложены глубоко, но должны соблюдаться. Он параллелен оператору присваивания - вы получите аналогичную синтаксическую ошибку, если попытаетесь присвоить вызов функции.

Конечно, что вы действительно хотите в этом случае, это

del List[-1]

, что означает последний элемент списка и гораздо более Pythonic.

5 голосов
/ 08 октября 2009

Вы вызываете функцию List(), когда вы должны индексировать список, List[].

В Python круглые скобки () используются для вызова функций, а квадратные скобки [] используются для индексирования списков и других последовательностей.

Попробуйте:

del List[len(List) - 1]

или даже лучше, используйте тот факт, что Python допускает отрицательные индексы, которые считаются с конца:

del List[-1]

Также, для ясности, вы можете захотеть сделать имя списка не столь близким к имени встроенного типа list.

1 голос
/ 08 октября 2009

Вам разрешено. Однако вы используете неверный синтаксис. Правильный синтаксис:

del List[-1]

Обратите внимание, что часть "len (List)" бесполезна.

...