2010-10-24 8 views
-1

J'ai une liste python commePython: comment obtenir les valeurs de pointe de cette liste

a = [ 
    [[1,2,(3,4)],[1,2,(5)],[-3,3,(3)],[8,-2,(5)]], 
    [[1,2,(3,4,5)],[-1,222,(3,4,5)],[99,2,(3)],[8,-2,(4,5)]] 
] 

Le tuple dans chaque élément de la liste est totale inutile, s'il vous plaît ignorer cela, mais les supprimer

I veulent obtenir la valeur de min max à partir de chaque élément de liste dans chaque position

la structure de sortie est exepected

li = [[xmin, ymin, xmax, ymax], [xmin, ymin, xmax, ymax] ] 

Dans ce cas, li est [[-3, -2, 8, 3], [-1, -2,99, 222]]

Alors est-il facile à faire? Merci

+2

On dirait presque la même question que vous avez posée hier: http://stackoverflow.com/questions/4002796/python-find-the-min-max-value-in-a-list Et si vous Si vous voulez un tuple avec un seul élément, la syntaxe correcte est '(x,)'. – adw

Répondre

0

D'abord, un point mineur de style, vous devez utiliser tuples pour les petites listes fix-longueur. I.e .: utiliser (xmin, ymin, xmax, ymax) au lieu de [xmin, ymin, xmax, ymax].

[(min(t[0] for t in lst), 
    min(t[1] for t in lst), 
    max(t[0] for t in lst), 
    max(t[1] for t in lst)) 
for lst in a] 
1

Si vous avez accès à numpy, vous pouvez utiliser numpy.amax. Vous pouvez utiliser le paramètre axis pour obtenir le maximum d'une certaine colonne du tableau.

+0

Ne pourrions-nous pas inclure d'autres bibliothèques? – user483144

1

Vous pouvez utiliser zip:

a = [ [[1,2,(3,4)],[1,2,(5)],[-3,3,(3)],[8,-2,(5)] ], 
[[1,2,(3,4,5)],[-1,222,(3,4,5)],[99,2,(3)],[8,-2,(4,5)] ] ] 

>>> i, h = zip(*a[0]), zip(*a[1]) 
>>> [min(i[0]), min(i[1]), max(i[0]), max(i[1])] 
[-3, -2, 8, 3] 
>>> [min(h[0]), min(h[1]), max(h[0]), max(h[1])] 
[-1, -2, 99, 222] 
+0

Pourrions-nous utiliser la boucle? puisque je peux avoir plus d'éléments dans une liste que cela? – user483144

+0

Mais si la structure de liste est la même, vous pouvez utiliser la même méthode. – rubik

+1

Utilisez une compréhension de liste pour les entrées plus grandes: '[[min (i [0]), min (i [1]), max (i [0]), max (i [1])] pour i dans (zip (* i) pour i dans a)] '. –

Questions connexes