Вы также можете сделать это как однострочное:
data = [[0.25, 0.0, 0.0, 0.0, 0.0, 0.0, 0.94, 0.0, 0.0, 0.63, 0.0],
[0.51, 0.51],
[0.54, 0.54, 0.0, 0.0,0.63, 0.0, 0.51, 0.54, 0.51, 1.0, 0.51],
[0.81,0.05, 0.13, 0.7, 0.02]]
# iL === innerList, abbreviated for 79 chars line width
max_idx, max_value = max( enumerate(max(iL) for iL in data), key = lambda x:x[1])
print(max_idx)
Вывод:
2 # max_value == 1, but not printed
Хитрость заключается в том, чтобы получить max(..)
каждого внутреннего списка, enumerate()
те и использовать другой max(iterable, key=...)
, который имеет key
, который выбирает самое высокое значение (не позиция) из перечислимого кортежа (position,value)
.
Преимущество - при этом используются генераторы :
вы не создаете никаких промежуточных списков, но просто работаете с генераторами - для больших списков это гораздо большепамяти, а затем создает список, как infiQuanta делает.