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

How Sort Lists Python



Bu makale Python'da listeleri sıralama hakkında bir kılavuzu kapsayacaktır. Python liste nesnesi, bir veya daha fazla virgülle ayrılmış öğenin bir koleksiyonudur. Bu yinelenebilir bir nesnedir ve öğelerine, döngü ifadeleri ve diğer ifadeler kullanılarak liste üzerinden yinelenerek erişilebilir. Bir Python listesini sort ve sorted yöntemlerini kullanarak sıralayabilirsiniz, her ikisi de makalede açıklanmıştır. Bu makaledeki tüm kod örnekleri Ubuntu 21.04'te Python 3.9.5 ile test edilmiştir.

Sıralama Yöntemi

Sıralama yöntemi, bir listeyi yerinde sıralar. Başka bir deyişle, sıralayacağınız liste nesnesini değiştirecek ve öğesini yeniden sıralayacaktır. Orijinal listeye ihtiyacınız yoksa ve listenin yerinde öğelerin sırasını değiştirmesine aldırmazsanız, bu Python'da bir listeyi sıralamak için en etkili yöntemdir. Bu örneği düşünün:







NS= [2, 8, 6, 4]

NS.çeşit()

Yazdır (NS)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:



[2, 4, 6, 8]

Kod örneğindeki ilk ifade bir liste tanımlar. Ardından, listede sıralama yöntemi çağrılır. Listeyi yazdırdığınızda, orijinal listenin sırasının değiştiğini görebilirsiniz.



Varsayılan olarak, Python bir listeyi artan düzende sıralar. Bir listeyi azalan düzende sıralamak istiyorsanız, aşağıdaki kod örneğinde gösterildiği gibi ters yöntemi kullanın:





NS= [2, 8, 6, 4]

NS.çeşit()

NS.ters()

Yazdır (NS)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

[8, 6, 4, 2]

Ters yöntem ayrıca yeni bir liste oluşturmadan bir Python listesini yerinde değiştirir.



Listeniz dize öğeleri içeriyorsa, sıralama yöntemini çağırmak, onu sembollerin ve sayıların ilk sıralandığı yerde alfabetik olarak sıralayacaktır. Aşağıdaki kod örneğine bir göz atın:

NS= ['s', 'ile', 'İle birlikte', '4', '#']

NS.çeşit()
Yazdır (NS)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

['#', '4', 'ile', 's', 'İle birlikte']

Dize öğelerini içeren bir listede de ters yöntemi kullanabilirsiniz.

NS= ['s', 'ile', 'İle birlikte', '4', '#']

NS.çeşit()

NS.ters()

Yazdır (NS)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

['İle birlikte', 's', 'ile', '4', '#']

Sıralı Yöntem

sorted yöntemi, sort yöntemiyle aynı şekilde bir Python listesini de sıralar. Ancak, orijinal listeyi değiştirmek yerine, yeniden kullanmak istemeniz durumunda orijinal listenize dokunulmaması için yeni bir liste döndürür. Aşağıdaki kodu göz önünde bulundurun:

liste1= ['s', 'ile', 'İle birlikte', '4', '#']

liste2= sıralanmış(liste1)

Yazdır (liste1,liste2)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

['s', 'ile', 'İle birlikte', '4', '#'] ['#', '4', 'ile', 's', 'İle birlikte']

Çıktıda liste1'in bozulmadığını ve liste2'nin artık sıralanmış öğeleri olduğunu görebilirsiniz. Sıralama metodolojisini değiştirmek için list2'deki ters yöntemi de kullanabilirsiniz.

Ters Argüman

Azalan düzende sıralanmış bir liste elde etmek için hem sıralama hem de sıralama yöntemlerinde ters işlevine alternatif olarak ters bağımsız değişkeni kullanabilirsiniz. Sıralama sırasını değiştirmek için ona bir True değeri verin:

liste1= ['s', 'ile', 'İle birlikte', '4', '#']

liste2= sıralanmış(liste1,ters=NS)

Yazdır (liste1,liste2)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

['s', 'ile', 'İle birlikte', '4', '#'] ['İle birlikte', 's', 'ile', '4', '#']

Bir Listenin Öğelerini Sıralamak İçin Kendi Mantığınızı Belirtmek İçin Tuş İşlevini Kullanma

Hem sort hem de sorted yöntemlerinde, değeri olarak çağrılabilir bir işlevi alan ek bir anahtar bağımsız değişken belirtebilirsiniz. Bu anahtar argümana yerleşik Python modüllerinden mevcut bir işlev atanabilir veya kendi işlevinizi özel mantıkla sağlayabilirsiniz. Aşağıdaki kod örneğine bir göz atın:

liste1= ['abcde', 'xyz', 'ijkl']

liste2= sıralanmış(liste1,anahtar=uzun)

Yazdır (liste1,liste2)

liste1.çeşit(anahtar=uzun)

Yazdır (liste1)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

['abcde', 'xyz', 'ijkl'] ['xyz', 'ijkl', 'abcde']

['xyz', 'ijkl', 'abcde']

Kod örneği, hem sıralı hem de sıralama yöntemlerinde anahtar bağımsız değişkenin kullanımını gösterir. Kendisine sağlanan işleve, bir dize nesnesinin veya yinelenebilir bir nesnenin uzunluğunu belirleyen len adı verilir. İşlev veya çağrılabilir, başlangıçta yalnızca bir argüman almalıdır. Bunu, parantez kullanmadan anahtar argümana atarsınız. Anahtar bağımsız değişkenine sağlanan çağrılabilir işlev, listenin her öğesinde çağrılır. Bu çağrılabilir yöntemden döndürülen değerler daha sonra listeyi sıralamak için bir anahtar olarak kullanılır. Bu nedenle, anahtar argümana len işlevinin sağlanması, bir listenin öğelerini uzunluklarına göre, yani en kısadan en uzuna sıralar. Daha önce belirtildiği gibi, sıralama metodolojisini tersine çevirmek için her zaman ters yöntemi kullanabilirsiniz.

Ayrıca kendi özel işlevinizi veya tek bir ifadenin değerini döndüren tek satırlı lambda işlevlerinizi de kullanabilirsiniz. Aşağıdaki kod örneğine bir göz atın, burada bir listede mevcut meyve kasaları envanteri tuple'ları bulunur:

liste1= [('Mango', 99), ('turuncu', 51), ('muz', 76)]

liste1.çeşit(anahtar=lambdaenvanter: envanter[1])

Yazdır (liste1)

Yukarıdaki kod örneğini çalıştırdıktan sonra aşağıdaki çıktıyı almalısınız:

[('turuncu', 51), ('muz', 76), ('Mango', 99)]

Lambda işlevi, listenin her bir öğesi tanımlama grubu biçiminde olan bir bağımsız değişken envanteri ile sağlanır. Daha sonra her bir demetin ikinci öğesini anahtar olarak döndürür (dizin 1'de). Sıralama işlevi daha sonra tüm demetleri ikinci elemanına göre artan düzende sıralar. Sıralama sırasını tersine çevirmek için sonuçtaki ters işlevi veya ters bağımsız değişkeni de kullanabilirsiniz.

Çözüm

Bunlar, Python'da yinelenebilir bir listenin içeriğini sıralayabileceğiniz bazı yöntemlerdir. Anahtar argüman, yerleşik sıralama yöntemlerinden farklı ihtiyaçları olabilecek uygulamalar için uygun olan kendi özel sıralama mantığınızı yazmanıza olanak tanır.