Python: получить максимальное значение из многомерного списка

#python #list #sorting #multidimensional-array #max

#python #Список #сортировка #многомерный массив #максимальное

Вопрос:

Я хочу получить максимальное значение этого списка, но быстрее, чем отсортированное.

 [[1, 3], [2, 3], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 1], [4, 2], [4, 3], [5, 2], [5, 3]]
  

Раньше я использовал сортировку с помощью ключа, подобного этому

 bb = int(sorted(ab, key = lambda x:(int(x[1])))[-1][1])
  

Для результата из этого списка

 [[1, 1], [2, 1], [2, 2], [3, 2]]
  

Я мог бы получить 3 и 2, которые являются максимальным значением каждой строки
Но я потратил слишком много времени, так как я могу ускорить это?
И я хочу иметь возможность устанавливать ключи, подобные методу сортировки, пожалуйста, помогите

Ответ №1:

Вам не нужно сортировать список (что добавило бы кучу избыточных операций). Вместо этого вы могли бы взять максимум из максимумов внутренних списков:

 lst = [[1, 3], [2, 3], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 1], [4, 2], [4, 3], [5, 2], [5, 3]]
result = max(max(l) for l in lst)
  

Комментарии:

1. Не эквивалентно оригиналу (хотя это может быть желательно).

2. Комментарий к моему сообщению подтвержден, рассмотрим подробнее. Спасибо за предупреждение!

3. Я имею в виду, я хочу получить максимальное значение по строке, например, lst [n] [0] или что-то в этом роде

Ответ №2:

Вы можете попробовать использовать numpy, он должен возвращать 5 на основе вашего списка

 import numpy as np

np.max(ab)
  

Комментарии:

1. Хорошее простое решение. Вы тестировали временные тесты по методу @Mureinik? (Включая импорт numpy )

2. Я собирался опубликовать результаты своей временной проверки, но я вижу, что вы уже опередили меня в этом: D