проблема с использованием lambda в python

#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))