Нахождение максимума списка списков суммой элементов в Python

Что идиоматический путь состоит в том, чтобы сделать maximumBy (функция высшего порядка взятие функции сравнения для теста) в списке списков, где сравнение, которое мы хотим сделать, является суммой списка в Python?

Вот реализация Haskell и вывод в качестве примера:

> maximumBy (compare `on` sum) [[1,2,3],[4,5,6],[1,3,5]]
> [4,5,6]

И реализации тех основных библиотечных функций, только для полноты (в случае, если Вы хотите использовать, уменьшают или что-то :)

maximumBy cmp xs =  foldl1 maxBy xs
    where
       maxBy x y = case cmp x y of GT -> x; _ -> y

k `on` f = \x y -> f x `k` f y

sum      =  foldl' (+) 0

15
задан Don Stewart 4 May 2010 в 05:53
поделиться

2 ответа

Начиная с Python 2.5, вы можете использовать max с ключевым параметром:

>>> max(a, key=sum)
[4, 5, 6]
41
ответ дан 1 December 2019 в 00:44
поделиться

Это не очень эффективно, но:

reduce(lambda x,y: x if sum(x)>sum(y) else y, [[1,2,3],[4,5,6],[1,3,5]])
1
ответ дан 1 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: