Python sıralandı ()

Sıralanmış () işlevi, yinelenebilen öğelerden sıralı bir liste döndürür.

sorted()Fonksiyonu, belirli bir sırayla belirli iterable elemanları (ya da sıralar artan ya da azalan ) ve duruma göre bir liste olarak iterable kriteri.

sorted()İşlevin sözdizimi şöyledir:

 sıralı (yinelenebilir, anahtar = Yok, ters = Yanlış)

Sıralanmış () işlevi için parametreler

sorted() en fazla üç parametre alabilir:

  • yinelenebilir - Bir dizi (dize, tuple, liste) veya koleksiyon (küme, sözlük, dondurulmuş küme) veya başka herhangi bir yineleyici.
  • tersine çevir (İsteğe bağlı) - TrueSıralanan liste tersine çevrilir (veya azalan düzende sıralanır). Sağlanmadıysa varsayılanlar False.
  • anahtar (İsteğe bağlı) - Sıralama karşılaştırması için anahtar görevi gören bir işlev. Varsayılan değer None.

Örnek 1: Dizeyi, listeyi ve tuple'ı sıralama

 # vowels list py_list = ('e', 'a', 'u', 'o', 'i') print(sorted(py_list)) # string py_string = 'Python' print(sorted(py_string)) # vowels tuple py_tuple = ('e', 'a', 'u', 'o', 'i') print(sorted(py_tuple))

Çıktı

 ('a', 'e', ​​'i', 'o', 'u') ('P', 'h', 'n', 'o', 't', 'y') ('a' , "e", "ben", "o", "u")

Her durumda sıralı bir listenin döndürüldüğüne dikkat edin.

Not: Listede, aynı şekilde çalışan sort () yöntemi de vardır sorted(). Tek fark, sort()yöntemin herhangi bir değer döndürmemesi ve orijinal listeyi değiştirmesidir.

Örnek 2: Azalan düzende sıralama

sorted()Fonksiyon kabul reverseisteğe bağlı bir değişken olarak parametre.

Ayar reverse = True, yinelenebilirliği azalan sırada sıralar.

 # set py_set = ('e', 'a', 'u', 'o', 'i') print(sorted(py_set, reverse=True)) # dictionary py_dict = ('e': 1, 'a': 2, 'u': 3, 'o': 4, 'i': 5) print(sorted(py_dict, reverse=True)) # frozen set frozen_set = frozenset(('e', 'a', 'u', 'o', 'i')) print(sorted(frozen_set, reverse=True))

Çıktı

 ('u', 'o', 'i', 'e', ​​'a') ('u', 'o', 'i', 'e', ​​'a') ('u', 'o' , "ben", "e", "a")

Python sıralanmış () işlevinde anahtar Parametresi

Sıralama için kendi uygulamanızı istiyorsanız, isteğe bağlı bir parametre olarak bir işlevi sorted()de kabul eder key.

Anahtar işlevinin döndürülen değerine bağlı olarak, verilen yinelenebilirliği sıralayabilirsiniz.

 sıralı (yinelenebilir, anahtar = len)

İşte len()Python'un bir nesnenin uzunluğunu saymak için yerleşik işlevi.

Liste, en düşük sayıdan en yükseğe doğru, öğenin uzunluğuna göre sıralanır.

Örnek 3: Anahtar işlevi olan sıralanmış () öğesini kullanarak listeyi sıralayın

 # take the second element for sort def take_second(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key sorted_list = sorted(random, key=take_second) # print list print('Sorted list:', sorted_list)

Çıktı

 Sıralanmış liste: ((4, 1), (2, 2), (1, 3), (3, 4))

Örnek 4: Birden çok anahtarla sıralama

Aşağıdaki listeye sahip olduğumuzu varsayalım:

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100, Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) )

Listeyi, en yüksek notu alan öğrenci başlangıçta olacak şekilde sıralamak istiyoruz. Öğrencilerin eşit not alması durumunda, genç katılımcı önce gelecek şekilde sıralanmalıdır.

Bu tür sıralamayı bir sayı yerine tuple döndürerek birden çok anahtarla gerçekleştirebiliriz.

İki tuple, ilkinden başlayarak öğeleri karşılaştırılarak karşılaştırılabilir. Bir bağ varsa (öğeler eşitse), ikinci öğe karşılaştırılır ve bu böyle devam eder.

 >>> (1,3)> (1, 4) False >>> (1, 4) >> (1, 4, 1) < (2, 1) True

Sıralama mantığımızı oluşturmak için bu mantığı kullanalım.

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) def sorter(item): # Since highest marks first, least error = most marks error = 100 - item(1) age = item(2) return (error, age) sorted_list = sorted(participant_list, key=sorter) print(sorted_list)

Çıktı

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Sıralama mantığı işlevi küçük olduğundan ve bir satıra sığdığından, lambdaişlev keyayrı bir işlev adı geçirmek yerine içeride kullanılır .

Yukarıdaki program, lambdafonksiyon kullanılarak aşağıdaki şekilde yazılabilir :

 # Nested list of student's info in a Science Olympiad # List elements: (Student's Name, Marks out of 100 , Age) participant_list = ( ('Alison', 50, 18), ('Terence', 75, 12), ('David', 75, 20), ('Jimmy', 90, 22), ('John', 45, 12) ) sorted_list = sorted(participant_list, key=lambda item: (100-item(1), item(2))) print(sorted_list)

Çıktı

 (('Jimmy', 90, 22), ('Terence', 75, 12), ('David', 75, 20), ('Alison', 50, 18), ('John', 45, 12) )

Lambda işlevleri hakkında daha fazla bilgi edinmek için Python Lambda Functions sayfasını ziyaret edin.

Ilginç makaleler...