İçeriğe geç

Filtreden önce sıralama (ARCH2076)

Anahtar python.performance.orderby-before-where · Önem warning · Kategori performance

Sıralamayı filtrelemeden önce yapmak, atılacak öğeleri de sıralayarak boşa iş yapar. Önce filtreleyip ardından kalan küçük kümeyi sıralayın.

def top_active(users):
ordered = sorted(users, key=lambda u: u.score, reverse=True)
return [u for u in ordered if u.active][:10]
def top_active(users):
active = [u for u in users if u.active]
return sorted(active, key=lambda u: u.score, reverse=True)[:10]

Önce filtreleyin, sıralamayı yalnızca kalan küçük küme üzerinde uygulayın.