поп первые N элементов

1

Я искал около часа, как выплескивать более одного элемента, на данный момент я думаю, что один лайнер не существует, но я хочу быть уверенным.

Что я хочу:

list = [1, 2, 3, 4]
eles = list.pop(2)
# list becomes [3, 4]
# eles = [1, 2]
  • 0
    Будьте осторожны, сколько вы поп из списка. Это требует перемещения всей структуры данных в памяти (а нарезка может потребовать дополнительных выделений). Вместо этого лучше использовать экземпляр deque, если вам нужно сильно изменить начало списка.
  • 0
    @EdwardMinnix Deque не обрабатывает всплывающие несколько элементов, поэтому текущий ответ закончится тем же, нет? И для информации, я буду появляться 4 каждый раз.
Показать ещё 2 комментария
Теги:
python-3.x

2 ответа

5
Лучший ответ

Вы можете попробовать следующее:

l = [1, 2, 3, 4]
eles, l = l[:2], l[2:]
print(eles)
print(l)

Выход:

[1, 2]
[3, 4]
  • 0
    Я люблю это. Я считаю, что это не влияет на «производительность», когда список большой?
  • 0
    Согласно wiki.python.org/moin/TimeComplexity#list сложность получения фрагмента списка составляет O (k), так что не должно быть.
Показать ещё 2 комментария
0

Сделайте это вместо этого:

eles = list[:2]
list = list[2:]

Кстати, вы не должны называть list переменных, поскольку он затеняет встроенный list функций.

  • 0
    Присвоение имен было только примером, в вашем примере, удаляются ли элементы из списка?
  • 0
    Хорошая точка зрения. Я только что обновил свой ответ, чтобы обновить list .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню