8 Nisan 2010 Perşembe

Python 1 Satırda QuickSort

İnternette dolaşırken 3 satırlık bir quicksort fonksiyonuna rastladım. Python'un list comprehension'ının gücünü göstermesi açısından güzel bir örnek fakat bu kodu gerçek hayatta kullanmaktan kaçının. Bunun yerine sort'u kullanın.

def qsort(L):
    if len(L) <= 1: return L
    return qsort( [lt for lt in L[1:] if lt < L[0]] ) + [L[0]] + qsort( [ge for ge in L[1:] if ge >= L[0]] )

Aslında bunu daha da kısaltmak mümkün:) Python'da and ve or operatörleri sadece boolean tipinde veri döndürmezler. Bu operatörler işlenilen son değeri döndürürler. Bu özelliği 2. ve 3. satırları birleştirmek için kullanabiliriz. Ayrıca fonksiyon tanımını bir lambda ifadesi olarak belirtirsek kodu tek bir satırda yeniden yazabiliriz:

qsort = lambda L: (len(L)>1 and qsort( [lt for lt in L[1:] if lt < L[0]] ) + [L[0]] + qsort( [ge for ge in L[1:] if ge >= L[0]]) ) or L 

1 yorum:

banias dedi ki...

enteresan :S