Python ile listeleri sıralamak

Python’da listeleri sıralamak için iki yol izlenebilir. Birincisi sort() metodu. Bu metod üzerinde uygulanan listeyi sıralar. Ancak none döndürdüğüne dikkat edilmelidir.

liste = [6,3,9]
liste.sort()
liste
[3, 6, 9]

Yani aşağıdaki şekilde bir atama yapamazsınız.

sirali_liste = liste.sort()
Bunun yerine sorted fonksiyonunu kullanabilirsiniz.

sirali_liste = sorted(liste)
Sorted fonksiyonu ayrıca argümanlarla özelleştirilebilir.

liste = ["google", "android", "java"]
sorted(liste, reverse=True)
['java', 'google', 'android']

Bence sorted fonksiyonunun en güzel tarafı, listeleri sıralamak için custom fonksiyon yazılabilmesidir.

sorted(liste, key=len)
['java', 'google', 'android']

Len gibi hazır bir fonksiyon kullanılabilir veya yazılan bir fonksiyon kullanılabilir.

def Fonk(a):
    return a(-1)
sorted(liste, key=Fonk) ['java', 'android', 'google']

Python’da liste kopyalama

Python’da listeleri aşağıdaki eşitlikle kopyalamaya çalıştığınızda liste içerisindeki değerler kopyalanmaz; listenin referans değeri kopyalanır. Bu durumda bir listede yapılan değişiklikler diğerinde de geçerli olur.

liste1=["deger1","deger2","deger3"]
liste2=liste1
liste2.append("deger4")
print liste1,liste2
['deger1', 'deger2', 'deger3', 'deger4'] ['deger1', 'deger2', 'deger3', 'deger4']

Bunun yerine değerleri kopyalamak için aşağıdakiler kullanılabilir:

liste1=["deger1","deger2","deger3"]
liste2=list(liste1)
liste2.append("deger4")
print liste1,liste2
['deger1', 'deger2', 'deger3'] ['deger1', 'deger2', 'deger3', 'deger4']

Veya:
liste1=["deger1","deger2","deger3"]
liste2=liste1[:]
liste2.append("deger4")
print liste1,liste2
['deger1', 'deger2', 'deger3'] ['deger1', 'deger2', 'deger3', 'deger4']

Son iki örnekte verilen kodlarda sadece değerler kopyalanır; bir listede yapılan değişiklik diğerini etkilemez.