#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