Python'da Listeler Nasıl Sıralanır?
Yayınlanan: 2022-03-30Bu makale size Python'da bir listeyi nasıl sıralayacağınızı öğretecektir.
Python'da bir listeyi yerinde sıralamak için sort() yöntemini kullanabilirsiniz. Veya listenin sıralanmış bir kopyasını almak için yerleşik sort() işlevini kullanabilirsiniz.
Bu eğitimde şunları öğreneceksiniz:
-
sort()
yönteminin ve sort(sorted()
işlevinin sözdizimi - Listeleri artan ve azalan düzende sıralamanın kod örnekleri
-
key
parametreyi kullanarak sıralamayı özelleştirin - sort() ile
sort()
sorted()
fark
Hadi başlayalım!
Python sort() Yönteminin Sözdizimi
sort()
yöntemi, bir Python listesine göre hareket eder. Ve listeyi yerinde sıralar ve orijinal listeyi değiştirir.
Python'un sort()
yönteminin sözdizimi şöyledir:
<list>.sort(reverse = True | False, key = <func>)
Şimdi yukarıdaki sözdizimini ayrıştıralım.
-
<list>
herhangi bir geçerli Python liste nesnesidir. -
reverse
, True veya False alan isteğe bağlı bir parametredir. -
False
reverse
liste artan düzende sıralanır. Listeyi azalan düzende sıralamak içinTrue
değerini verin. -
key
ayrıca<func>
olarak ayarlanmış isteğe bağlı bir parametredir. -
<func>
yerleşik bir işlev veya kullanıcı tanımlı bir işlev olabilir.
Bir sonraki bölümde, basit örnekleri kodlamaya başlayacaksınız.
Python Listesi Artan Sırada Nasıl Sıralanır?
Liste nums
düşünün. Listeyi artan düzende sıralamak için listedeki sort()
yöntemini çağırabilirsiniz.
Aşağıdaki kod parçacığını çalıştırın.
nums = [25,13,6,17,9] nums.sort() print(nums) # Output: [6, 9, 13, 17, 25]
Liste nums
artan düzende sıralandı ve orijinal liste değiştirildi. Buna yerinde sıralama denir.
Python Listesini Azalan Sırada Sıralama
Listeyi azalan düzende sıralamak için, aşağıda gösterildiği gibi reverse
True
olarak ayarlayın.
nums = [25,13,6,17,9] nums.sort(reverse = True) print(nums) # Output: [25, 17, 13, 9, 6]
Listenin artık azalan düzende sıralandığını görebilirsiniz.
Python sort() Yöntemi ile anahtar nasıl kullanılır
Bu bölümde key
parametresini kullanalım ve sıralamayı özelleştirelim.
Burada mod5()
, x
sayısını alan ve x
sayısı 5'e bölündüğünde kalanı veren bir fonksiyondur.
def mod5(x): return x % 5
Ve yukarıdaki işlevi key
olarak kullanmak istiyoruz.
Şimdi, aşağıdaki kod hücresini çalıştırın.
nums = [25,13,6,17,9] nums.sort(key = mod5) print(nums) # Output: [25, 6, 17, 13, 9]
Çıktıyı ayrıştırmak için bir dakikanızı ayırın.
Normal sıralama yerine, sıralamanızı mod5
olan key
göre nasıl özelleştirdiğinize dikkat edin.
- Şimdi 5'e bölündüğünde en küçük kalanı veren sayı ilk sırada geliyor.
- Ve 5'e bölündüğünde en büyük kalanı veren sayı, sıralanmış listedeki son elemandır.
Durumun böyle olduğunu doğrulamak için aşağıdaki kod parçacığını çalıştırın.
nums = [25,13,6,17,9] for num in nums: print(f"{num} leaves remainder {num%5} when divided by 5") # Output 25 leaves remainder 0 when divided by 5 13 leaves remainder 3 when divided by 5 6 leaves remainder 1 when divided by 5 17 leaves remainder 2 when divided by 5 9 leaves remainder 4 when divided by 5
5, 25'i tam olarak böler ve kalan 0'dır. Bu, sıralanmış listedeki ilk öğedir. 6, 1 kalanı bırakır, yani ikinci elemandır, vb. 9, 5'e bölündüğünde kalan 4'ü bırakır ve sıralanmış listedeki son öğedir.
Ayrı bir fonksiyon tanımlamak yerine lambda fonksiyonlarını da kullanabilirsiniz. Python'da lambdalar tek satırlık anonim işlevlerdir. lambda args : ifade , argümanlarda hesaplanan ifadeyi döndürür .
Şimdi yukarıdaki sıralamayı lambda ifadesini kullanarak aşağıda gösterildiği gibi yeniden yazalım.
nums = [25,13,6,17,9] nums.sort(key = lambda x:x%5) print(nums) # Output: [25, 6, 17, 13, 9]
Şimdiye kadar, bir sayı listesini nasıl sıralayacağınızı öğrendiniz. Ardından, Python'da bir dizi listesini nasıl sıralayabileceğinizi görelim.
Python Listesini Alfabetik Sıraya Göre Sıralama
Bu bölümde, Harry Potter'dan ilham alan örneklerle bir dizi dizisini sıralamayı öğreneceksiniz.
Örneğimizde, students
Hogwarts'taki öğrencilerin bir listesidir. Ve onları isimlerinin alfabetik sırasına göre sıralamak istiyoruz.
Bir dizi listesi sıralanırken, varsayılan sıralama alfabetik sıraya göredir.
students = ["Harry","Ron","Hermione","Draco","Cedric"]
Sıralamanın sonucunu doğrulamak için sıralanmış listeyi yazdıralım.
students.sort() print(students) # Output ['Cedric','Draco', 'Harry', 'Hermione', 'Ron']
Python Listesini Ters Alfabetik Sıraya Göre Sıralama
Listeyi ters alfabetik sırayla sıralamak için aşağıdaki kod parçacığında gösterildiği gibi reverse
= True
değerini ayarlayın.
students.sort(reverse = True) print(students) # Output ['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']
Çıktıdan, listenin gerçekten de ters sırada sıralandığını görebilirsiniz.
Anahtar Parametre Nasıl Kullanılır Sıralamayı Özelleştir
Bu bölümde, isteğe bağlı key
parametresini kullanarak sıralamayı özelleştirelim.
Aşağıdaki listeyi göz önünde bulundurun, houses
.
houses = [ {1:"Draco","house":"Slytherin"}, {2:"Harry","house":"Gryffindor"}, {3:"Cedric","house":"Hufflepuff"} ]
Burada houses
sözlüklerin bir listesidir. Her sözlük, biri öğrencilerin adlarını, diğeri ise ait oldukları evi gösteren iki anahtar/değer çifti içerir.
Şimdi bu listedeki evleri ait oldukları evlerin alfabetik sırasına göre sıralamak istiyoruz.
Şimdiye kadar tahmin edebileceğiniz gibi, key
parametreyi belirli öğrencilerin evine ayarlamalıyız.
Her öğrencinin evini almak için aşağıda gösterildiği gibi bir returnHouse()
işlevi tanımlayabilirsiniz.
def returnHouse(student): return student['house']
Bu işlev, belirli öğrencinin ait olduğu evi döndürür.
Şimdi, evler listesindeki sort()
yöntemini gösterildiği gibi çağırabilirsiniz.
houses.sort(key=returnHouse)
Aşağıdaki çıktıda, listenin öğrencilerin isimlerine göre değil, eve göre nasıl sıralandığına dikkat edin. Bu yüzden alfabetik sırayla Gryffindor, Hufflepuff ve Slytherin'e sahibiz.
print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
key
parametresini buna göre tanımlamak için bir lambda işlevi de kullanabilirsiniz. Her liste öğesi için bu işlev, o liste öğesi için evi döndürür.
Bunu doğrulamak için aşağıdaki kod hücresini çalıştırın.
houses.sort(key=lambda student:student["house"]) print(houses) # Output [{2: 'Harry', 'house': 'Gryffindor'}, {3: 'Cedric', 'house': 'Hufflepuff'}, {1: 'Draco', 'house': 'Slytherin'}]
Şimdiye kadarki tüm örneklerde, bir listede sort()
yöntemini kullandınız. Ve artık orijinal listeyi değiştirdiğini biliyorsunuz.
Ya orijinal listeyi olduğu gibi tutmak, ancak listenin sıralanmış bir kopyasını almak isterseniz?
Python'da bunu yapmak için sorted()
işlevini kullanabilirsiniz.
Python sorted() Fonksiyonunun Sözdizimi
sorted()
işlevi, argüman olarak bir listeyi veya herhangi bir koleksiyonu alır. Ve listenin sıralanmış bir kopyasını döndürür ve orijinal liste değiştirilmez.
Python'un sort sorted()
işlevinin sözdizimi şöyledir:
<sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)
Sözdiziminin daha önce gördüğümüz sort()
yöntemine ne kadar benzer olduğuna dikkat edin.
-
<list>
herhangi bir geçerli Python liste nesnesidir ve gerekli bir parametredir. -
reverse
vekey
isteğe bağlı parametrelerdir
Not : Yalnızca listelerde etkili olan
sort()
yönteminin aksine, sort(sorted()
işlevi, listeler, dizeler ve sözlükler gibi yinelenebilir Python'ları sıralamak için kullanılabilir.
sorted() İşlevini Kullanarak Python Listesi Nasıl Sıralanır
#1. Bu örnekte, nums
bir sayı listesidir.
Argüman olarak nums
ile sorted sorted()
işlevini çağırabilirsiniz. Ve bunu sorted_nums1
listesine atayın.
nums = [25,13,6,17,9] sorted_nums1 = sorted(nums) print(sorted_nums1) # Output: [6, 9, 13, 17, 25]
Yukarıdaki çıktıda, nums
varsayılan olarak artan düzende sıralandığını görebilirsiniz.
Ayrıca, orijinal liste numaralarının değiştirilmediğine dikkat edin; çünkü nums
sorted()
yeni bir liste döndürür. Bu, aşağıda doğrulanmıştır.
print(nums) # Output: [25, 13, 6, 17, 9]
# 2 . Şimdi, isteğe bağlı reverse
parametreyi True
olarak ayarlayın ve sorted_nums2
.
Aşağıdaki kod hücresinde gösterildiği gibi, sorted_nums2
, azalan düzende sıralanmış öğelerin bulunduğu yeni bir listedir.
sorted_nums2 = sorted(nums,reverse = True) print(sorted_nums2) # Output: [25, 17, 13, 9, 6]
#3. Bu örnekte, bir dizi listesiyle çalışalım.
Önceki örneklerde olduğu gibi, sorted sorted()
işlevinin çağrılması yeni bir liste döndürür. Ve öğeler alfabetik sıraya göre sıralanmıştır.
fruits = ['pears','strawberry','apple','pineapple','blueberry'] sorted_fr1 = sorted(fruits) print(sorted_fr1) # Output: ['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']
#4. Şimdi, isteğe bağlı key
parametresini kullanarak sıralamayı özelleştirelim. key
len
olarak ayarlayın. Bu, listeyi dizelerin uzunluğuna göre sıralayacaktır.
Not: Python'da yerleşik
len()
işlevi, listeler, dizeler, demetler vb. gibi yinelenebilir öğeleri alır. Ve yinelenebilirin uzunluğunu döndürür.
En kısa uzunluktaki dize, sıralanan listede ilk sırada, en uzun dize ise sıralanan listenin sonunda görünür.
fruits = ['pear','strawberry','apple','pineapple','blueberry'] sorted_fr2 = sorted(fruits,key=len) print(sorted_fr2) # Output: ['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']
Yukarıdaki çıktıda, armut en kısa dizidir ve çilek en uzun dizidir.
Python sort() Yöntemi ve sorted() İşlevi
Şimdiye kadar sort()
yönteminin yanı sıra sort( sorted()
işlevinin nasıl kullanılacağını öğrendiniz. Bu bölümde, bu iki yöntem arasındaki farkları sıralayalım.
Python .sort() Yöntemi | Python sıralı() İşlev |
Listeyi yerinde sıralar—orijinal listeyi değiştirir | Yeni bir sıralanmış liste döndürür |
Yalnızca Python listeleriyle çalışır | Listeler, dizeler ve diğer koleksiyonlar gibi Python yinelenebilirleriyle çalışır |
None dönüş türüne sahiptir | Yinelenebilir öğenin sıralanmış bir kopyasını döndürür |
Özetliyor
Umarım bu Python listelerini öğretici bulmuşsunuzdur.
Anlattıklarımızı hızlıca özetleyelim.
- Listeyi yerinde sıralamak için isteğe bağlı ters ve anahtar parametreleriyle list.sort(reverse = True | False, key = <func>) kullanın.
- Listenin sıralanmış bir kopyasını almak için sorted(list, reverse = True | False, key = <func>) kullanın.
Python listelerini nasıl sıralayacağınızı öğrendiğinize göre, Python'da liste anlama hakkında bilgi edinin. Veya Python'da dosyaları nasıl kullanacağınızı veya JSON dosyalarıyla nasıl çalışacağınızı da öğrenebilirsiniz.
Yukarıda verilen örnekleri Geekflare Online Python Compiler'da deneyebilirsiniz.