koddla

Yazılımcıları bilgi ile güçlendirir.

Python’da listenin son öğesi nasıl elde edilir?

Python’da, listenin son öğesini nasıl alırsınız? En kısa ve en Pythonik yolu some_list[-1] şeklindedir.

Aslında, bu sözdizimi ile çok daha fazlasını yapabilirsiniz. some_list[-n] sözdizimi, sondan n. öğeyi alır. Dolayısıyla some_list[-1] son öğeyi alır, some_list[-2] sondan ikinci öğeyi alır, vb..

Öte yandan liste öğelerini bu şekilde de tanımlayabilirsiniz. Örneğin:

>>> some_list = [1, 2, 3]
>>> some_list[-1] = 5 # Son öğeyi tanımlar
>>> some_list[-2] = 3 # Sondan 2. öğeyi tanımlar
>>> some_list
[1, 3, 5]

Beklenen öğe yoksa, bir IndexError hatası alacağınızı unutmayın. Bu, boş bir listenin son öğesi olamadığı için beklenen bir sonuç olacaktır.

Bu durumda some_list[-1:] söz dizimini kullanmayı tercih edebilirsiniz. Benzer şekilde dizeler için de bu yöntemi kullanabiliriz:

alist = []
alist[-1]   # IndexError hatası verir
alist[-1:]  # boş bir liste döndürür
astr = ''
astr[-1]    # IndexError hatası verir
astr[-1:]   # boş bir dize döndürür

Son öğeyi alma ve kaldırma

listem.pop() ile son öğeyi kaldırıp döndürerek orijinal listemizi de değiştirebiliriz:

>>> a_list.pop(-1)
'three'
>>> a_list
['zero', 'one', 'two']

Ama şimdi orijinal listemiz değişti. .pop()’u tekrar çağırdığımızda aşağıdaki çıktıyı alırız:

>>> a_list.pop()
'two'

reversed ve yineleyici ile son öğeyi alma

Buna neden ihtiyaç duyarsınız bilemiyorum, ancak bir yineleyici ve reversed fonksiyonu ile de benzer sonucu elde edebiliriz:

>>> next(reversed([1,2,3]))
3

Yani bunun tersini yapmak gibi:

>>> next(iter([1,2,3]))
1

Ama bunu yapmak için iyi bir neden bilemiyorum, tabii daha sonra ters yineleyicinin geri kalanına ihtiyacınız olmayacaksa, ki bu muhtemelen daha çok şöyle kullanılabilir:

reverse_iterator = reversed([1,2,3])
last_element = next(reverse_iterator)

use_later = list(reverse_iterator)

böylece:

>>> use_later
[2, 1]
>>> last_element
3

çıktısını elde ederiz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top