Lebih
Mendapatkan elemen terakhir dari daftar
Di Python, bagaimana anda mendapatkan elemen terakhir dari list?
1850
11
Di Python, bagaimana anda mendapatkan elemen terakhir dari list?
some_list[-1]
adalah yang terpendek dan paling Pythonic.Bahkan, anda dapat melakukan lebih banyak lagi dengan sintaks ini. The
some_list[-n]
sintaks mendapat nth-untuk-elemen terakhir. Jadisome_list[-1]
sampai elemen terakhir,some_list[-2]
mendapat kedua dari terakhir, dll, semua jalan ke bawah untuksome_list[-len(some_list)]
, yang memberikan elemen pertama.Anda juga dapat mengatur daftar unsur-unsur dalam cara ini. Misalnya:
Perhatikan bahwa untuk mendapatkan daftar item dengan indeks akan meningkatkan
IndexError
jika diharapkan item yang doesn't ada. Ini berarti bahwasome_list[-1]
akan menaikkan pengecualian jikasome_list
kosong, karena daftar kosong dapat't memiliki elemen terakhir.Jika anda
str()
ataudaftar()
benda-benda yang mungkin berakhir menjadi kosong seperti ini:astr = ''
ataualist = []
, maka anda mungkin ingin untuk menggunakanalist[-1:]
bukanalist[-1]
untuk objek "kesamaan".Makna dari hal ini adalah:
Di mana perbedaan yang dibuat adalah bahwa kembali kosong daftar objek atau kosong str objek lebih "elemen terakhir" seperti itulah pengecualian objek.
Anda juga dapat melakukan:
Itu tergantung pada apa yang ingin anda lakukan dengan daftar anda karena
pop()
metode ini akan menghapus elemen terakhir.Cara paling sederhana untuk menampilkan elemen terakhir dalam python
ada banyak metode lain untuk mencapai tujuan tersebut, tapi ini pendek dan manis untuk digunakan.
Untuk mendapatkan elemen terakhir,
lulus
-1
untuk subskrip notasi:Penjelasan
Indeks dan irisan dapat mengambil bilangan bulat negatif sebagai argumen.
Saya telah dimodifikasi contoh dari dokumentasi untuk menunjukkan item dalam urutan indeks masing-masing referensi, dalam hal ini, dalam string
"Python"
,-1
referensi elemen terakhir, karakter,'n'
:Tugas melalui iterable membongkar
Metode ini mungkin tidak perlu terwujud daftar kedua untuk tujuan hanya mendapatkan elemen terakhir, tapi demi kelengkapan (dan karena itu mendukung setiap iterable - tidak hanya daftar):
Nama variabel, kepala terikat yang tidak perlu yang baru dibuat daftar:
Jika anda berniat untuk melakukan apa-apa dengan daftar itu, ini akan lebih apropos:
Atau, benar-benar, jika anda tahu itu's daftar (atau setidaknya menerima subskrip notasi):
Di sebuah fungsi
Commenter berkata:
Ini akan menjadi cukup sederhana untuk menentukan:
Atau menggunakan
operator.itemgetter
:Dalam kedua kasus:
Kasus-kasus khusus
Jika anda're melakukan sesuatu yang lebih rumit, anda dapat menemukan lebih performant untuk mendapatkan elemen terakhir dalam cara yang sedikit berbeda.
Jika anda're baru untuk pemrograman, anda harus menghindari bagian ini, karena itu pasangan jika tidak semantik bagian-bagian yang berbeda dari algoritma bersama-sama. Jika anda mengubah algoritma anda di satu tempat, itu mungkin memiliki dampak yang tidak diinginkan di baris lain dari kode.
Saya mencoba untuk memberikan peringatan dan kondisi sebagai benar-benar seperti yang saya bisa, tapi saya mungkin telah melewatkan sesuatu. Silakan komentar jika anda pikir saya'm meninggalkan peringatan keluar.
Mengiris
Sepotong daftar kembali daftar baru - sehingga kita dapat mengiris dari -1 sampai akhir jika kita mau elemen dalam sebuah daftar baru:
Ini telah terbalik dari tidak gagal jika list kosong:
Sedangkan yang mencoba untuk mengakses dengan indeks menimbulkan sebuah
IndexError
yang perlu ditangani:Tapi sekali lagi, mengiris untuk tujuan ini hanya boleh dilakukan jika anda perlu:
untuk
loopSebagai fitur Python, tidak ada dalam pelingkupan dalam
untuk
loop.Jika anda're pertunjukan lengkap iterasi daftar sudah, elemen terakhir masih akan direferensikan oleh nama variabel yang ditetapkan dalam loop:
Ini bukan semantik hal terakhir dalam daftar. Ini adalah semantik hal terakhir yang nama,
item
, itu pasti.Dengan demikian ini hanya boleh digunakan untuk mendapatkan unsur terakhir jika anda
Untuk mendapatkan dan mengeluarkannya
Kami juga dapat bermutasi kami jual asli dengan menghapus dan mengembalikan elemen terakhir:
Tapi sekarang daftar asli dimodifikasi.
(
-1
sebenarnya adalah default argumen, jadidaftar.pop
dapat digunakan tanpa indeks argumen):Hanya lakukan hal ini jika
Ini berlaku penggunaan-kasus, tetapi tidak sangat umum.
Hemat sisa terbalik untuk nanti:
Saya don't tahu mengapa anda'd lakukan, tapi untuk kelengkapan, sejak
dibalik
kembali iterator (yang mendukung iterator protocol) anda dapat lulus hasil untuknext
:Jadi itu's seperti melakukan kebalikan dari ini:
Tapi aku bisa't memikirkan alasan yang baik untuk melakukan hal ini, kecuali anda'll perlu sisa reverse iterator nanti, yang mungkin akan terlihat lebih seperti ini:
dan sekarang:
lst[-1]
adalah pendekatan yang terbaik, tapi dengan umum iterables, pertimbangkanmore_itertools.last
:Kode
Untuk mencegah
IndexError: list index out of range
, menggunakan sintaks ini:Metode lain:
Anda juga dapat menggunakan kode di bawah ini, jika anda tidak ingin mendapatkan IndexError ketika daftar kosong.
daftar[-1]
akan mengambil elemen terakhir dari daftar tanpa mengubah daftar.daftar.pop()
akan mengambil elemen terakhir dari list, tapi itu akan bermutasi/perubahan daftar asli. Biasanya, bermutasi asli daftar ini tidak dianjurkan.Atau, jika, untuk beberapa alasan, anda'kembali mencari sesuatu yang kurang pythonic, anda bisa menggunakan
daftar[len(list)-1]
, dengan asumsi list tidak kosong.Ok, tapi bagaimana dengan yang umum di hampir setiap bahasa dengan cara
item[len(item) - 1]
? Ini adalah IMO cara termudah untuk mendapatkan elemen terakhir, karena tidak memerlukan apa-apa pythonic pengetahuan.