0
votes

Trouver une valeur min exclue zéro dans des listes imbriquées

Comment trouver des valeurs min hors zéro dans cette liste qui a des listes imbriquées ci-dessous?

[1, 2, 3]


2 commentaires

Il y a toujours une liste imbriquée ou peut être plusieurs?


@Alderven on seul


5 Réponses :


3
votes

Ceci est une option: xxx

Si je comprends correctement, vous voulez le minimum de chaque "colonne" de votre liste imbriquée. zip (* lst) vous permet d'itérer sur des colonnes; Ensuite, je viens de sélectionner le minimum de ceux-ci.


3 commentaires

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.



3
votes

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]


4 commentaires

mais il devrait être [1, 2, 3]


@ user7716943 ok, pourquoi devrait-il être [1, 2, 3] ? 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é .


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é.



2
votes
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)

0 commentaires

2
votes

Vous pouvez utiliser une combinaison de chaîne , filtre (ou compréhension) et min: xxx


0 commentaires

1
votes

Un peu trop compréhensions :), xxx

trop? Ok, moins compréhensions :), xxx


0 commentaires