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?

persegi panjang
sumber

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
kevpie
sumber
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.

justin.m.chase
sumber
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
38
>>> x = [0, 1, 2, 3, 4]
>>> x.pop(0)
0

Lebih lanjut tentang ini di sini .

pengguna225312
sumber
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]
Haes
sumber
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

Zimm3r
sumber
15

Kemudian hapus saja:

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]
martineau
sumber
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
Yoni Shperling
sumber
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]
vertexion
sumber
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]
tsveti_iko
sumber
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!!

Bhaskar Bhuyan
sumber