Bir listenin (dizinin) n öğesini Python’daki en büyük veya en küçük değerden ve n=1’den başlayarak almak istiyorsanız, aşağıdaki yerleşik işlevi kullanabilirsiniz.
max()
min()
n>1 ise, listeyi sıralamanın veya standart kitaplığın heapq modülünü kullanmanın iki yolu vardır.
- Maksimum ve minimum değerleri alın:
max()
,min()
- Maksimum ve minimum değer sırasına göre n eleman alın:çeşit
- Maksimum ve minimum değer sırasına göre n eleman alın:
heapq
Modül
Alınacak öğelerin sayısı büyükse, bunları önce sort() veya sort() kullanarak sıralamak daha verimlidir ve sayı küçükse, heapq modülünün nargest() ve nsmallest() öğeleri daha verimlidir.
Maksimum ve minimum değerlerin indekslerini almak için max(), min() ve index() kullanın.
Maksimum ve minimum değerleri alın:max(),min()
Listenin maksimum ve minimum öğelerini elde etmek için, yerleşik max() ve min() işlevlerini kullanın.
l = [3, 6, 7, -1, 23, -10, 18]
print(max(l))
# 23
print(min(l))
# -10
Maksimum ve minimum değer sırasına göre n eleman alın: Sırala
Bir listenin n elemanını en büyük veya en küçük değerden sırayla almak istiyorsanız, ilk yöntem listeyi sıralamak (sıralamak).
Listeyi sıralamak için yerleşik sort() işlevini veya listenin sort() yöntemini kullanın. sort(), yeni bir sıralanmış liste döndürürken, sort() orijinal listeyi yeniden sıralar.
Argümanın tersi ile artan/azalan sırayı değiştirerek ve üstten herhangi bir sayıda dilim seçerek, listenin en büyük/küçük değerinden sırayla n öğe alabilirsiniz.
ld = sorted(l, reverse=True)
print(ld)
# [23, 18, 7, 6, 3, -1, -10]
print(ld[:3])
# [23, 18, 7]
la = sorted(l)
print(la)
# [-10, -1, 3, 6, 7, 18, 23]
print(la[:3])
# [-10, -1, 3]
Hepsini tek satırda yazabilirsiniz.
print(sorted(l, reverse=True)[:3])
# [23, 18, 7]
print(sorted(l)[:3])
# [-10, -1, 3]
Orijinal listenin sırasını değiştirmede bir sakınca yoksa sort() yöntemini kullanabilirsiniz.
print(l)
# [3, 6, 7, -1, 23, -10, 18]
l.sort(reverse=True)
print(l[:3])
# [23, 18, 7]
print(l)
# [23, 18, 7, 6, 3, -1, -10]
l.sort()
print(l[:3])
# [-10, -1, 3]
print(l)
# [-10, -1, 3, 6, 7, 18, 23]
Maksimum ve minimum değer sırasına göre n eleman alın:heapqModül
Bir listenin n elemanını en büyük veya en küçük değerden sırayla almak istiyorsanız heapq modülünü kullanabilirsiniz.
Heapq modülünde aşağıdaki işlevi kullanın. Bu durumda, orijinal liste değiştirilmeyecektir.
nlargest()
nsmallest()
İlk argüman, alınacak öğelerin sayısıdır ve ikinci argüman, hedeflenecek yinelenebilir (liste vb.).
import heapq
l = [3, 6, 7, -1, 23, -10, 18]
print(heapq.nlargest(3, l))
# [23, 18, 7]
print(heapq.nsmallest(3, l))
# [-10, -1, 3]
print(l)
# [3, 6, 7, -1, 23, -10, 18]
Başta yazdığım gibi, alınacak eleman sayısı fazlaysa, önce sorted() veya sort() ile sıralamak, sayı küçükse nargest() ve nsmallest() ile sıralamak daha verimlidir. heapq modülü daha verimlidir.