Bagaimana cara menghapus Item pertama dari daftar?


773

Saya memiliki daftar yang [0, 1, 2, 3, 4]ingin saya buat [1, 2, 3, 4]. Bagaimana saya melakukannya?

Jawaban:


1261

Daftar Python

list.pop (indeks)

>>> l = ['a', 'b', 'c', 'd']
>>> l.pop(0)
'a'
>>> l
['b', 'c', 'd']
>>> 

daftar del [indeks]

>>> l = ['a', 'b', 'c', 'd']
>>> del l[0]
>>> l
['b', 'c', 'd']
>>> 

Keduanya mengubah daftar asli Anda.

Yang lain menyarankan menggunakan slicing:

  • Salinan daftar
  • Dapat mengembalikan subset

Juga, jika Anda melakukan banyak pop (0), Anda harus melihat collections.deque

from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
  • Memberikan performa tinggi yang muncul dari ujung kiri daftar

Anda juga dapat menggunakan indeks negatif, yang memiliki arti yang sama dengan daftar.
Gabriel Devillers

189

Mengiris:

x = [0,1,2,3,4]
x = x[1:]

Yang sebenarnya akan mengembalikan subset dari aslinya tetapi tidak memodifikasinya.


17
jika xkosong, x=x[1:]akan membiarkannya kosong tanpa mengeluh. x.pop(0)akan membuang daftar kosong x. Terkadang melempar adalah apa yang diinginkan seseorang: Jika asumsi bahwa setidaknya ada elemen dalam daftar itu salah, orang mungkin ingin mendapat pemberitahuan.
benar

Terima kasih untuk ini! Ini adalah jawaban yang lebih baik, imo, karena itu tidak merusak
Hee Jin


29

Dengan pemotongan daftar, lihat tutorial Python tentang daftar untuk detail lebih lanjut:

>>> l = [0, 1, 2, 3, 4]
>>> l[1:]
[1, 2, 3, 4]

29

kamu hanya akan melakukan ini

l = [0, 1, 2, 3, 4]
l.pop(0)

atau l = l[1:]

Pro dan kontra

Dengan menggunakan pop, Anda dapat mengambil nilainya

katakanlah x = l.pop(0) xakan0


15

Kemudian hapus saja:

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]

8

Anda dapat menggunakan list.reverse()untuk membalik daftar, lalu list.pop()untuk menghapus elemen terakhir, misalnya:

l = [0, 1, 2, 3, 4]
l.reverse()
print l
[4, 3, 2, 1, 0]


l.pop()
0
l.pop()
1
l.pop()
2
l.pop()
3
l.pop()
4

5

Anda juga dapat menggunakan list.remove(a[0])untuk popmengeluarkan elemen pertama dalam daftar.

>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]

3
OP tidak bertanya tentang cara terbaik untuk melakukannya. Ini hanyalah pendekatan lain untuk mencapai hal yang sama!
vertexion

1
Ya, pendekatan lain yang tidak memiliki keunggulan dibandingkan jawaban lainnya. Ada sejumlah cara untuk melakukannya. Kenapa tidak memberikan jawaban a.remove(a[1-1])? Itu cara lain.
Ned Batchelder

2
Maksud saya adalah bahwa jawaban Anda lebih buruk daripada jawaban yang lain, dan tidak ada yang merekomendasikannya. Tidak ada alasan untuk menggunakan jawaban ini di atas yang lain. Hanya karena "cara lain" bukan alasan untuk menambahkannya di sini.
Ned Batchelder

4
@NedBatchelder Poin Anda diperdebatkan. Ini adalah metode tambahan yang tersedia untuk mendaftar dalam Python, khusus untuk tugas khusus ini, dan demi kelengkapannya harus diperhatikan. Contoh BS yang dibuat [1-1], di lain pihak, bukan. Belum lagi bahwa jawabannya tidak "lebih buruk daripada jawaban yang lain" dengan cara apa pun.
Hejazzman

8
Saya mendukung pertanyaan saya: ini terasa aneh dan dibuat-buat, dan tidak ada yang merekomendasikannya. Bahkan, kalimat pertama menyesatkan, karena Anda tidak dapat menghapus elemen ke-i dengan list.remove(a[i]). Dengan nilai duplikat, mungkin menemukan elemen sebelumnya dengan nilai yang sama, dan menghapus yang bukan i'th.
Ned Batchelder

4

Jika Anda bekerja dengan numpy, Anda perlu menggunakan metode hapus :

import numpy as np

a = np.array([1, 2, 3, 4, 5])

a = np.delete(a, 0)

print(a) # [2 3 4 5]

1

Ada struktur data yang disebut "deque" atau antrian ujung ganda yang lebih cepat dan efisien daripada daftar. Anda dapat menggunakan daftar Anda dan mengubahnya menjadi deque dan melakukan transformasi yang diperlukan di dalamnya. Anda juga dapat mengubah deque kembali ke daftar.

import collections
mylist = [0, 1, 2, 3, 4]

#make a deque from your list
de = collections.deque(mylist)

#you can remove from a deque from either left side or right side
de.popleft()
print(de)

#you can covert the deque back to list
mylist = list(de)
print(mylist)

Deque juga menyediakan fungsi yang sangat berguna seperti memasukkan elemen ke kedua sisi daftar atau ke indeks tertentu. Anda juga dapat memutar atau membalikkan deque. Cobalah!!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.