Apakah ada alasan untuk melakukan sesuatu yang lebih rumit daripada salah satu dari dua baris ini ketika Anda ingin menghapus daftar dengan Python?
old_list = []
old_list = list()
Alasan saya bertanya adalah bahwa saya baru saja melihat ini di beberapa kode yang sedang berjalan:
del old_list[ 0:len(old_list) ]
a[:x]
berarti mulai ke x dana[x:]
berarti x sampai akhir.a[ 0:len(a) ]
dapat ditulis sebagaia[:]
. Anda juga dapat menggunakan negatif untuk menghitung dari akhir (a[-1]
adalah elemen terakhir).Jawaban:
Menghapus daftar yang ada akan memengaruhi semua referensi lain dari daftar yang sama.
Misalnya, metode ini tidak memengaruhi referensi lain:
Tapi yang ini:
Anda juga bisa:
sumber
del a[:]
a
? Saya pikira
danb
referensi ke objek yang sama ... Hanya ingin tahu kenapa. Terima kasih.a.clear()
, tidak masalah!Melakukan
alist = []
tidak menghapus daftar, hanya membuat daftar kosong dan mengikatnya ke variabelalist
. Daftar lama akan tetap ada jika memiliki binding variabel lainnya.Untuk benar-benar menghapus daftar di tempat , Anda dapat menggunakan salah satu dari cara ini:
alist.clear() # Python 3.3+, most obvious
del alist[:]
alist[:] = []
alist *= 0 # fastest
Lihat halaman dokumentasi Mutable Sequence Type untuk lebih jelasnya.
sumber
Ada cara yang sangat sederhana untuk menghapus daftar python. Gunakan del list_name [:] .
Sebagai contoh:
sumber
Tampak bagi saya bahwa del akan memberikan Anda memori kembali, sementara menetapkan daftar baru akan membuat yang lama dihapus hanya ketika gc runs.matter.Ini mungkin berguna untuk daftar besar, tetapi untuk daftar kecil itu harus diabaikan.
Sunting : Sebagai Algorias, tidak masalah.
Catat itu
setara dengan
sumber
Akan menghapus nilai-nilai variabel daftar itu
Akan menghapus variabel itu sendiri dari memori
sumber
Ada dua kasus di mana Anda mungkin ingin menghapus daftar:
old_list
lebih lanjut dalam kode Anda;Dalam kasus 1 Anda hanya melanjutkan dengan tugas:
Dalam kasus 2
del
pernyataan akan mengurangi jumlah referensi ke objek daftar diold list
titik nama . Jika objek daftar hanya menunjuk dengan namaold_list
di, jumlah referensi akan 0, dan objek akan dibebaskan untuk pengumpulan sampah.sumber
Jika Anda membersihkan daftar, Anda, tentu saja, tidak perlu daftar lagi. Jika demikian, Anda bisa menghapus seluruh daftar dengan metode del sederhana.
Tetapi jika Anda membutuhkannya lagi, Anda dapat menginisialisasi ulang. Atau cukup dengan menghapus elemen-elemennya
sumber
solusi lain yang berfungsi dengan baik adalah membuat daftar kosong sebagai referensi daftar kosong.
misalnya Anda memiliki daftar sebagai
a_list = [1,2,3]
. Untuk menghapusnya cukup buat yang berikut ini:ini akan membuat
a_list
daftar kosong sepertiempt_list
.sumber