Dengan python, saya tahu cara menghapus item dari daftar.
item_list = ['item', 5, 'foo', 3.14, True]
item_list.remove('item')
item_list.remove(5)
Kode di atas ini menghapus nilai 5 dan 'item' dari item_list. Tetapi ketika ada banyak hal yang harus dihapus, saya harus menulis banyak baris
item_list.remove("something_to_remove")
Jika saya mengetahui indeks dari apa yang saya hapus, saya menggunakan:
del item_list[x]
dimana x adalah indeks dari item yang ingin saya hapus.
Jika saya mengetahui indeks dari semua angka yang ingin saya hapus, saya akan menggunakan semacam perulangan ke del
item di indeks.
Tetapi bagaimana jika saya tidak tahu indeks item yang ingin saya hapus?
Saya mencoba item_list.remove('item', 'foo')
, tetapi saya mendapat kesalahan yang mengatakan itu remove
hanya membutuhkan satu argumen.
Adakah cara untuk menghapus beberapa item dari daftar dalam satu pernyataan?
PS Saya telah menggunakan del
dan remove
. Bisakah seseorang menjelaskan perbedaan antara keduanya, atau apakah mereka sama?
Terima kasih
del
hapus item dengan indeksnya. Theremove
Fungsi daftar menemukan indeks item dan kemudian memanggildel
pada indeks itu.Jawaban:
Di Python, membuat objek baru seringkali lebih baik daripada memodifikasi yang sudah ada:
Yang mana setara dengan:
Dalam kasus daftar besar nilai yang disaring (di sini,
('item', 5)
adalah sekumpulan kecil elemen), gunakan aset
dapat mengarah pada peningkatan kinerja, karenain
operasinya ada di O (1):Perhatikan bahwa, seperti yang dijelaskan dalam komentar dan disarankan di sini , hal berikut dapat menghemat lebih banyak waktu, menghindari set yang akan dibuat pada setiap loop:
Sebuah Filter mekar juga merupakan solusi yang baik jika memori tidak murah.
sumber
in
pengoperasian. Lihat tolok ukur ini untuk perbandingan empat struktur data primitif. Ya, himpunan dibangun di setiap loop, seperti yang disarankan di sini , akibatnya menyimpan himpunan dalam variabel khusus untuk digunakan dalam ekspresi generator dapat menghemat waktu.id(item_list)
sebelum dan sesudahitem_list = [e for e in item_list if e not in ('item', 5)]
. Periksa jawaban saya untuk melihat cara mengubah daftar di tempat.daftar terakhir setelah menghapus harus sebagai berikut
Kode Baris Tunggal
keluarannya adalah sebagai berikut
sumber
Saya tidak tahu mengapa semua orang lupa menyebutkan kemampuan luar biasa
set
s dengan python. Anda cukup memasukkan daftar Anda ke dalam satu set dan kemudian menghapus apa pun yang ingin Anda hapus dalam ekspresi sederhana seperti:sumber
Saya memposting ulang jawaban saya dari sini karena saya melihatnya juga cocok di sini. Ini memungkinkan menghapus beberapa nilai atau menghapus hanya duplikat dari nilai-nilai ini dan mengembalikan daftar baru atau mengubah daftar yang diberikan di tempat.
Ekstensi Docstring:
Anda harus jelas tentang apa yang sebenarnya ingin Anda lakukan, mengubah daftar yang ada, atau membuat daftar baru dengan item tertentu hilang. Penting untuk membuat perbedaan itu jika Anda memiliki referensi kedua yang menunjuk ke daftar yang ada. Jika sudah, misalnya ...
Ini mungkin atau mungkin bukan perilaku yang Anda inginkan.
sumber
Anda dapat menggunakan fungsi filterfalse dari modul itertools
Contoh
Keluaran:
sumber
Saya tidak begitu mengerti mengapa Anda tidak suka .remove tetapi untuk mendapatkan indeks pertama yang sesuai dengan nilai, gunakan .index (value):
lalu hapus nilai yang sesuai:
.index (nilai) mendapatkan kemunculan pertama nilai, dan .remove (nilai) menghapus kemunculan nilai pertama
sumber
del item_list[ind]
daripadapop
jika Anda tidak membutuhkan nilai hasil.Anda dapat menggunakan ini -
Misalkan kita punya daftar,
l = [1,2,3,4,5]
Kami ingin menghapus dua item terakhir dalam satu pernyataan
Kami memiliki keluaran:
Tetap Sederhana
sumber