Liste sıralıysa sana bedava bilgi verir: aynı değerler yan yanadır, bir elemandan küçük olan her şey solundadır. Bu bilgiyi kullanmayan çözüm, sıralı olmayan liste için yazılmış çözümdür.
count = 0previous = Nonefor v in values:if v != previous:count += 1previous = vreturn count
Sıralı listede bir değeri ararken de bütün listeye bakmazsın. Ortadaki elemana bak: aradığın daha büyükse sol yarının tamamını at, küçükse sağ yarıyı. Her adım kalan kısmı yarıya indirir; bir milyon eleman yirmi adımda biter. Buna ikili arama denir.