Comment trouver des valeurs min hors zéro dans cette liste qui a des listes imbriquées ci-dessous?
[1, 2, 3]
5 Réponses :
Ceci est une option: Si je comprends correctement, vous voulez le minimum de chaque "colonne" de votre liste imbriquée. zip (* lst) code> vous permet d'itérer sur des colonnes; Ensuite, je viens de sélectionner le minimum de ceux-ci. p> p>
Trié n'est pas nécessaire, édité ma question de nouveau pour cela.
Il suffit de faire une compréhension si le résultat serait [1, 2, 3]
Ouais c'est tout, peut-être que je n'ai pas bien expliqué, merci.
Vous pouvez utiliser une compréhension de la liste imbriquée, filtrant d'abord les valeurs zéro des listes imbriquées en premier et que vous obtenez uniquement les minettes des livres qui ont toujours des éléments laissés.
>>> lst = [[1, 5, 7], [8, 6, 3], [0, 2, 4], [0, 0, 0]] >>> In [3]: [min(sub) for sub in ([x for x in sub if x] for sub in zip(*lst)) if sub] [1, 2, 3]
mais il devrait être [1, 2, 3]
@ user7716943 ok, pourquoi i> devrait-il être [1, 2, 3] code>? Ce n'est pas l'ordre des éléments min de la liste. Si vous voulez juste que les éléments min sont dans la commande triée, utilisez
trié code>.
Non, il n'est pas à propos de trier ... Vous devez la voir de telle sorte que vous comparez chacune de ces listes imbriquées pour chaque index pour obtenir une valeur min ..... vous obtenez donc une valeur min de LST [0] [0] [0] [0] [0] [0]. ] & lst [1] [0] & lst [2] [0] et ainsi de suite .....
@ user7716943 ah, maintenant je vois. Fixé.
lst = [[1, 5, 7], [8, 6, 3], [0, 2, 4], [0, 0, 0]] flat_list =[i for j in lst for i in j] flat_list.sort() flat_list=list(set(flat_list)) min_val = flat_list[0] if flat_list[0]!=0 else flat_list[1] print(min_val)
Vous pouvez utiliser une combinaison de chaîne code>, filtre (ou compréhension) et min:
Un peu trop trop? Ok, moins compréhensions code> :),
compréhensions code> :), p>
Il y a toujours une liste imbriquée ou peut être plusieurs?
@Alderven on seul