2015-10-22 2 views
-5

Я хотел бы поместить максимальное число (ы) в новый массив, я пробовал все, что я могу придумать, и никто, кажется, не работает ... (добавление в пустой массив результатов, concat и т. д.)Поиск самого большого числа во вложенном списке в Python

Очевидно, что цикл for печатает максимальную функцию с соответствующими номерами, , но у меня слабое понимание возврата и печати, а также для сбора значений из цикла, и т.д.

list = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]] 
for i in list: 
    print max(i) 

345 
555 
777 
666 
+0

'для ..... Code_to_add_i_to_array', в основном, вместо' для ...: печать i'. –

+0

Было бы более обычным преобразовать ваш список в массив сначала, а затем взять max() для массива.1) превратить вложенный список в одиночный, 2) преобразовать единый список в массив, 3 взять max()/argmax в Numpy – user1749431

ответ

0
newArray = [max(i) for i in list] 

поиск до генераторах списков, один из самых полезных тонких gs о python.

+0

Да, я вчера немного разбирался в списках ... и, возможно, даже пытался взломать что-то с этим, чтобы сделать эту работу, но не кубик –

0

Попробуйте список понимание:

L = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]] 
maxes = [max(sublist) for sublist in L] 
print(maxes) 
# [345, 555, 777, 666] 
+0

... и он работает с списками разной длины! Я должен изучить этот бит больше, спасибо –

0

Вау, люди суровы сегодня. Я думаю, что я понял ваш вопрос;

new_list = [max(i) for i in list] 
for k in new_list: 
    print (k) 
+0

>>> new_list [345, 555, 777, 666] – SteveJ

2

Просто нанесите max каждый подсписок:

Python 2: map(max, lists) 
Python 3: list(map(max, lists)) 

Конечно последнему работает только если вы не тень встроенной list функции с переменным (которая является плохой идеей в любом случае, поэтому вместо этого я использовал имя lists).

>>> lists = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]] 
>>> map(max, lists) 
[345, 555, 777, 666] 
0

Рабочий пример в Python 2 - Испытано с Python 2.6.9 и 2.7.10

L01 = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]] 
L02 = map(max, L01) 
print(L02) 

Выходной

[345, 555, 777, 666] 


Рабочий пример в Python 3 - Испытано с Python 3.2.5 и 3.4.3 и 3.5.0

Единственное отличие состоит в том, что map() обернут list().

L01 = [[21, 34, 345, 2], [555, 22, 6, 7], [94, 777, 65, 1], [23, 54, 12, 666]] 
L02 = list(map(max, L01)) 
print(L02) 

Выход

[345, 555, 777, 666] 
Смежные вопросы