2010-10-24 3 views
-1

Я получил список питона, какPython: как получить краевые значения из этого списка

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 хотят получить максимальную отдачу от мин каждого элемента списка в каждой позиции

exepected выходная структура

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

В этом случае Ли [[-3, -2, 8, 3], [-1, -2,99, 222]]

Так есть ли легко сделать? Спасибо

+2

Кажется почти тот же вопрос вы задали вчера: http://stackoverflow.com/questions/4002796/python-find-the-min-max-value-in-a-list И если вы хотите кортеж с одним элементом, правильным синтаксисом является '(x,)'. – adw

ответ

0

Во-первых, незначительные стилистические точки, вы должны использовать кортежи для небольших списков фикс длины. I.e .: использовать (xmin, ymin, xmax, ymax) вместо [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

Если у вас есть доступ к NumPy, вы можете использовать numpy.amax. Вы можете использовать параметр axis, чтобы получить максимум определенного столбца массива.

+0

Можем ли мы не включать другие библиотеки? – user483144

1

Вы можете использовать почтовый индекс:

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

Можем ли мы использовать цикл? так как я могу получить больше элементов в списке, чем это? – user483144

+0

Но если структура списка одинакова, вы можете использовать тот же метод. – rubik

+1

Используйте представление списка для больших входов: '[[min (i [0]), min (i [1]), max (i [0]), max (i [1])] для i in (zip (* i) для i в a)] '. –

Смежные вопросы