2017-09-28 2 views

Répondre

5

Vérifiez simplement si le tuple est vide avant de prendre le dernier élément.

sorted(lst, key=lambda p: bool(p) and p[-1]) 

bool(p) and p[-1] rendements False (qui est évaluée à 0) lorsque tuple est vide, sinon elle retourne la dernière valeur.

Avec cette approche, les tuples vides viennent en premier dans la liste triée si toutes les valeurs sont positives. Il a besoin d'un réglage plus pour les faire apparaître premier ou dernier dans le cas générique, toujours faisable en retournant un tuple dans le lambda:

sorted(lst, key=lambda p: (not bool(p),bool(p) and p[-1])) 

ce qui suit fera les tuples vides viennent en dernier dans la liste (en raison de la not cédant True lorsqu'il est vide)