#python #lambda
#python #lambda
Вопрос:
Я пытаюсь написать лямбда-выражение, где оно занимает минуты и делит его на диапазон, затем выводит результат. Я пытался
list((lambda minutes: minutes / range),range(Numbe 1,1))
но список принимает только один аргумент, есть идеи? Минуты и число, которые пользователь предоставляет
Я понял это с помощью
List=[]
List=range(1, Number 1)
List.reverse()
print(List)
for number in List:
print ( minutes/ number)
Я знаю, что код выглядит очень новичком, и был бы признателен за любые советы, чтобы выглядеть лучше
Комментарии:
1. Это просто проблема стиля, но вы попали в ту же ловушку, что и многие новички. Опишите свою проблему, не спрашивайте, как сделать то, что вы решили, является решением 🙂
Ответ №1:
Вам действительно нужно использовать lambda? Вот список, который большинству людей, кажется, легче читать
[float(minutes)/number for minutes in range(1,number 1)]
Эквивалентом использования лямбда-функции является
map(lambda minutes: float(minutes)/number, range(1,number 1))
И более короткий способ написать это
map(float(number).__rdiv__, range(1,number 1))
Здесь нужна float
функция (если вы не используете Python3), потому что в противном случае выполняется целочисленное деление
Комментарии:
1. Вместо использования функции float, op также может установить «из _ будущего _ подразделения импорта».
Ответ №2:
То, что вы ищете, — это map
встроенная функция, которая воздействует на отдельные элементы контейнера, переданные ей в качестве второго аргумента, и возвращает результат, представляющий собой список. Первый аргумент часто является lambda, который принимает аргумент и воздействует на него. В вашем случае — минуты и число.
map(lambda number:number/rangeval,range(1,rangeval))