Utilizzando una lista ordinata in modo decrescente e decrementando ogni elemento fino a che è > k potresti ridurre il numero di confronti effettuati e quindi migliorare la velocità d'esecuzione in alcuni casi, però ovviamente devi considerare il costo di ordinare la lista (senza contare che l'ordine della lista originaria potrebbe essere importante e quindi non "riordinabile") che perciò lo rende meno efficiente nel caso non lo sia già.
Non mi vengono in mente alternative, ma magari esiste qualche caratteristica/funzione di Python che ti permette di ottimizzare i tempi.