#python #list
Вопрос:
Я изучаю Python, и я сталкиваюсь с этим:
x = [1,0]
x.insert(0,2)
x.remove(x[-1])
print(x)
и результат [2, 1]
такой, какой и ожидается.
Но затем я изменяю значение для вставки на 0.
x = [1,0]
x.insert(0,0)
x.remove(x[-1])
print(x)
и результат [1, 0]
, который является неожиданным. Я ожидаю, что результат будет [0, 1]
таким .
Что я здесь пропустил?
Комментарии:
1.
remove
удалит первое вхождение элемента. Смотритеhelp(x.remove)
для получения дополнительной информации.2. Попробуй
del x[-1]
вместоx.remove(x[-1])
этого .
Ответ №1:
list.remove
удаляет первый элемент, равный аргументу. x[-1]
значение равно 0, поэтому он удаляет первый 0, который является первым элементом вашего списка. Просто потому, что вы использовали -1
индексирование x
перед вызовом list.remove
, не обязательно означает, что он удалит элемент в индексе -1
.
Смотрите list.remove
документацию здесь.
Вы можете вызвать list.pop
, для удаления которого требуется индекс элемента, а не сам элемент. В вашем примере замена x.remove(x[-1])
на x.pop()
(по умолчанию на последний индекс) даст ожидаемый результат.
Ответ №2:
list.remove
удаляет первый найденный элемент, соответствующий переданному параметру. Если вы хотите просто удалить последний элемент, который вы можете использовать pop()
без параметров или pop(-1)
.
Из документов:
список.удалить(x) Удалите первый элемент из списка, значение которого равно x. Это вызывает ошибку значения, если такого элемента нет.
список.pop([i]) Удалите элемент в заданной позиции в списке и верните его. Если индекс не указан, a.pop() удаляет и возвращает последний элемент в списке. (Квадратные скобки вокруг i в подписи метода означают, что параметр является необязательным, а не то, что вы должны вводить квадратные скобки в этой позиции. Вы часто увидите эту запись в справочнике по библиотеке Python.)