как работает лямбда в python с функцией max? - PullRequest
0 голосов
/ 27 февраля 2019
stocks ={
    'BMW':40 ,
    'FB': 90 ,
    'whatsapp':100,
    'Apple':30
    }
print("lowest stock is : " , min(stocks ,key =lambda x:stocks[x]) )

этот код работает, но мне нужно знать, как работают лямбда-выражения в этом контексте, я знаю, что он принимает аргумент, а затем возвращает результат, являющийся выражением, поэтому мой вопрос заключается в том, какой аргумент принимает в этом примере лямбда 'x ', и этот аргумент также изменяется или нет. Я имею в виду, меняет ли функция min его при запуске. Поэтому, когда min вызывается впервые, каково значение x.thanks заранее.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Ваша функция min () получает итеративный аргумент в качестве первого аргумента (в данном случае диктат акции).

Второй аргумент, который называется 'key = lambda x: stocks [x]', - это функция, которая определяет, исходя из того, какой минимум следует оценивать.

Обычно x принимает следующие значения ('BMW' 'FB' 'whatsapp' 'Apple'), а лямбда-функция возвращает значения (40 90 100 30).30 - это самое низкое значение, и поэтому ваша функция min () вернет «ключ» для этого значения, то есть «Apple» (не путать с «ключом», который является аргументом в функции min ())

0 голосов
/ 27 февраля 2019

С https://www.programiz.com/python-programming/methods/built-in/min:

  1. мин (итеративный, * итерируемый [, ключ, по умолчанию])
    • итерируемый - последовательность (кортеж, строка), коллекция (набор, Dictionary) или объект итератора, для которого найден наименьший элемент
    • * iterables (Необязательно) - любое количество итераций, наименьший из которых можно найти
    • key (Необязательно) - функция ключа гдеитерации передаются, и сравнение выполняется на основе его возвращаемого значения
    • default (необязательно) - значение по умолчанию, если заданная итерация пуста

Вызов min(stocks, key= lambda x:stocks[x]) находит наименьший элемент в stocks, сравнивая результаты функции lambda x:stocks[x], которая является просто анонимной функцией, которая возвращает значение запаса для данного ключа.Так что вызов min возвращает запас с наименьшим значением.

См. Также Получите ключ, соответствующий минимальному значению в словаре и http://www.aroseartist.com/python-dictionary-max-min/

...