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.