Tri des listes de listes dans un ordre alterné
Étant donné une liste contenant des sous-listes au format [['a',1], [' a',2], ['a',3], ['b',1], ['b',2], ['b',3]], le but est de trier ces sous-listes de manière alternée , avec l'élément 0 trié par ordre décroissant et l'élément 1 trié par ordre croissant. Le résultat attendu est [['b',1], ['b',2], ['b',3], ['a',1], ['a',2], ['a', 3]].
Pour y parvenir, on peut exploiter la fonction sort() avec une clé personnalisée. La clé est une fonction lambda qui extrait les éléments d'intérêt et leur applique une opération de tri. Dans ce cas, il récupère le premier élément de chaque sous-liste, applique un tri décroissant, puis le combine avec le négatif du deuxième élément, trié par ordre croissant. En inversant l'ordre de tri avec reverse=True, les sous-listes sont triées par ordre décroissant par le premier élément et par ordre croissant par le deuxième élément. Il en résulte l'ordre alterné souhaité.
L'extrait de code suivant illustre la solution :
<code class="python">L = [['a',1], ['a',2], ['a',3], ['b',1], ['b',2], ['b',3]] L.sort(key=lambda k: (k[0], -k[1]), reverse=True) print(L) # [['b', 1], ['b', 2], ['b', 3], ['a', 1], ['a', 2], ['a', 3]]</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!