Dengan Python, bagaimana Anda mendapatkan elemen terakhir dari daftar?
2067
some_list[-1]
adalah yang terpendek dan paling Pythonic.
Bahkan, Anda dapat melakukan lebih banyak dengan sintaks ini. The some_list[-n]
sintaks mendapat elemen n-to-lalu. Jadi some_list[-1]
dapatkan elemen terakhir, some_list[-2]
dapatkan yang kedua ke yang terakhir, dll, semuanya some_list[-len(some_list)]
, yang memberi Anda elemen pertama.
Anda juga dapat mengatur elemen daftar dengan cara ini. Contohnya:
>>> some_list = [1, 2, 3]
>>> some_list[-1] = 5 # Set the last element
>>> some_list[-2] = 3 # Set the second to last element
>>> some_list
[1, 3, 5]
Perhatikan bahwa mendapatkan item daftar menurut indeks akan meningkatkan IndexError
jika item yang diharapkan tidak ada. Ini berarti bahwa some_list[-1]
akan memunculkan pengecualian jika some_list
kosong, karena daftar kosong tidak dapat memiliki elemen terakhir.
some_list.last
- itu akan menjadi baris kode yang indahJika objek
str()
atau Andalist()
mungkin menjadi kosong seperti itu:astr = ''
ataualist = []
, maka Anda mungkin ingin menggunakanalist[-1:]
alih-alihalist[-1]
untuk objek "kesamaan".Arti penting dari ini adalah:
Di mana perbedaan yang dibuat adalah bahwa mengembalikan objek daftar kosong atau objek str kosong lebih "elemen terakhir" -seperti objek pengecualian.
sumber
if len(my_vector) == 0 or my_vector[-1] != update_val
adalah pola yang bisa diterapkan. tapi itu jelas bukan solusi global - alangkah baiknya memiliki bentuk sintaks di mana Tidak ada hasilnyaxs[-1] if xs else None
Anda juga dapat melakukan:
Itu tergantung pada apa yang ingin Anda lakukan dengan daftar Anda karena
pop()
metode ini akan menghapus elemen terakhir.sumber
Cara paling sederhana untuk menampilkan elemen terakhir dalam python adalah
ada banyak metode lain untuk mencapai tujuan seperti itu tetapi ini pendek dan manis untuk digunakan.
sumber
list[-1]
akan salah.a[-1:][0]
sama sekali ? Dia juga menyediakana[-1]
. Penjelasannya tolong?Untuk mendapatkan elemen terakhir,
lolos
-1
ke notasi subskrip:Penjelasan
Indeks dan irisan dapat mengambil bilangan bulat negatif sebagai argumen.
Saya telah memodifikasi contoh dari dokumentasi untuk menunjukkan item dalam urutan masing-masing referensi indeks, dalam hal ini, dalam string
"Python"
,-1
referensi elemen terakhir, karakter,'n'
:Tugas melalui membongkar iterable
Metode ini mungkin secara tidak perlu memunculkan daftar kedua untuk tujuan mendapatkan elemen terakhir, tetapi demi kelengkapan (dan karena mendukung setiap iterable - bukan hanya daftar):
Nama variabel, head terikat ke daftar yang baru dibuat yang tidak perlu:
Jika Anda tidak ingin melakukan apa pun dengan daftar itu, ini akan menjadi lebih penting:
Atau, sungguh, jika Anda tahu itu daftar (atau paling tidak menerima notasi subskrip):
Dalam suatu fungsi
Seorang komentator berkata:
Ini akan sangat sederhana untuk didefinisikan:
Atau gunakan
operator.itemgetter
:Dalam kedua kasus:
Kasus khusus
Jika Anda melakukan sesuatu yang lebih rumit, Anda mungkin akan mendapatkan kinerja lebih tinggi untuk mendapatkan elemen terakhir dengan cara yang sedikit berbeda.
Jika Anda baru dalam pemrograman, Anda harus menghindari bagian ini, karena itu menggabungkan bagian algoritma yang semantik berbeda secara bersamaan. Jika Anda mengubah algoritme Anda di satu tempat, itu mungkin memiliki dampak yang tidak diinginkan pada baris kode lain.
Saya mencoba memberikan peringatan dan kondisi selengkap mungkin, tetapi saya mungkin melewatkan sesuatu. Tolong beri komentar jika Anda pikir saya akan meninggalkan peringatan.
Mengiris
Sepotong daftar mengembalikan daftar baru - jadi kita dapat mengiris dari -1 hingga akhir jika kita ingin elemen dalam daftar baru:
Sisi baiknya adalah tidak gagal jika daftar kosong:
Sedangkan upaya untuk mengakses menurut indeks menimbulkan suatu
IndexError
yang perlu ditangani:Tetapi sekali lagi, mengiris untuk tujuan ini hanya boleh dilakukan jika Anda membutuhkan:
for
loopSebagai fitur Python, tidak ada pelingkupan batin dalam satu
for
lingkaran.Jika Anda sudah melakukan iterasi lengkap pada daftar, elemen terakhir masih akan dirujuk oleh nama variabel yang ditetapkan dalam loop:
Ini bukan secara semantik hal terakhir dalam daftar. Ini adalah hal terakhir yang nama
item
itu terikat.Jadi ini seharusnya hanya digunakan untuk mendapatkan elemen terakhir jika Anda
Mendapatkan dan menghapusnya
Kami juga dapat mengubah daftar asli kami dengan menghapus dan mengembalikan elemen terakhir:
Tetapi sekarang daftar asli dimodifikasi.
(
-1
sebenarnya adalah argumen default, jadilist.pop
dapat digunakan tanpa argumen indeks):Hanya lakukan ini jika
Ini adalah kasus penggunaan yang valid, tetapi tidak terlalu umum.
Menyimpan sisa dari pembalikan untuk nanti:
Saya tidak tahu mengapa Anda melakukannya, tetapi untuk kelengkapannya, karena
reversed
mengembalikan iterator (yang mendukung protokol iterator), Anda dapat meneruskan hasilnya kenext
:Jadi itu seperti melakukan kebalikan dari ini:
Tapi saya tidak bisa memikirkan alasan yang baik untuk melakukan ini, kecuali Anda akan memerlukan sisa iterator terbalik nanti, yang mungkin akan terlihat lebih seperti ini:
dan sekarang:
sumber
Untuk mencegah
IndexError: list index out of range
, gunakan sintaks ini:sumber
Metode lain:
sumber
lst[-1]
adalah pendekatan terbaik, tetapi dengan iterables umum, pertimbangkanmore_itertools.last
:Kode
sumber
list[-1]
akan mengambil elemen terakhir dari daftar tanpa mengubah daftar.list.pop()
akan mengambil elemen terakhir dari daftar, tetapi akan mengubah / mengubah daftar asli. Biasanya, mengubah daftar asli tidak disarankan.Atau, jika, karena alasan tertentu, Anda mencari sesuatu yang kurang pythonic, Anda dapat menggunakan
list[len(list)-1]
, dengan asumsi daftar tersebut tidak kosong.sumber
Anda juga dapat menggunakan kode di bawah ini, jika Anda tidak ingin mendapatkan IndexError saat daftar kosong.
sumber
Oke, tapi bagaimana dengan hampir di semua bahasa
items[len(items) - 1]
? Ini adalah IMO cara termudah untuk mendapatkan elemen terakhir, karena tidak memerlukan pengetahuan pythonic apa pun .sumber
some_list[-1]
pendekatan karena lebih logis, dan menunjukkan apa yang sebenarnya dilakukan lebih baik daripadasome_list[-1]
menurut saya.