Python'da Listeler Nasıl Sıralanır?

Yayınlanan: 2022-03-30

Bu 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çin True 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.

python sıralama listesi

Ö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 ve key 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.