Рубрики
Без рубрики

Python одна линия для петли лямбда

Проблема: учитывая коллекцию. Вы хотите создать новый список на основе всех значений в этой коллекции. Код должен работать в одной строке кода. Как вы это делаете? Вам нужна функция лямбда? Пример: учитывая массив A = [1, 2, 3, 4]. Вам нужно создать секунду … Python One Line для Loop Lambda Подробнее »

Автор оригинала: Chris.

Проблема : Учитывая коллекцию. Вы хотите создать новый список на основе всех значений в этой коллекции. Код должен работать в одной строке кода. Как вы это делаете? Вам нужен лямбда Функция ?

Пример : Учитывая массив A = [1, 2, 3, 4] Отказ Вам нужно создать второй массив B со всеми значениями А -У добавления +1 к каждому значению. Вот ваш мультиналог:

a = [1, 2, 3, 4]
b = []
for x in a:
    b.append(x+1)
print(b)
# [2, 3, 4, 5]

Как вы выполняете это в одной строке кода?

Ответ Нет, вам не нужна функция лямбда. Что вы ищете, это функция под названием Понимание списка Отказ Вот выражение одноклассника, которое выполняет это без функции лямбда:

b = [x+1 for x in a]
print(b)
# [2, 3, 4, 5]

Вы можете попробовать этот пример самостоятельно в нашем интерактивном оболочке кода:

Давайте погрузимся в некоторую справочную информацию, если вам интересно, как работают по ссылке. Исходя из вашего вопроса, я также подозреваю, что вы не полностью понимаете функции лямбда, поэтому я также добавлю другой раздел о функциях лямбда. Наконец, вы также узнаете о третьем альтернативном методе для решения этой точной проблемы с помощью функции Lambda в сочетании с функцией встроенной карты Python!

Итак, оставайтесь со мной – вы станете лучшим кодером в процессе! 🙂.

Понимание списка 101.

Понимание списка является компактным способом создания списков. Простая формула – [Выражение + контекст] Отказ

  • Выражение: Что делать с каждым элементом списка?
  • Контекст: Какие элементы для выбора? Контекст состоит из произвольного количества для и Если заявления.

Пример [X для X в диапазоне (3)] Создает список [0, 1, 2] Отказ

Посмотрите на следующий интерактивный кодовый фрагмент – вы можете выяснить, что напечатано в оболочке? Продолжай и нажмите «Беги», чтобы увидеть, что произойдет в коде:

Я объясню обе способы создания нового списка в следующем.

Пример : Скажи, что вы хотите Отфильтруйте всех клиентов из вашей базы данных, которые зарабатывают более 1 000 000 долларов. Это то, что новичок не знает, понимание списка будет делать:

# (name, $-income)
customers = [("John", 240000),
             ("Alice", 120000),
             ("Ann", 1100000),
             ("Zach", 44000)]

# your high-value customers earning <$1M
whales = []
for customer, income in customers:
    if income>1000000:
        whales.append(customer)
print(whales)
# ['Ann']

Этот фрагмент нуждается в четырех строках, чтобы создать список высококачественных клиентов (китов)!

Вместо этого гораздо лучший способ сделать то же самое – использовать список пометков:

whales = [x for x,y in customers if y>1000000]
print(whales)
# ['Ann']

Понимание списка мертвое просто, когда вы знаете формулу.

«Состояние списка состоит из скобок, содержащих выражение, сопровождаемое предложение, а затем нулю или более для или если положения. Результатом станет новым списком, полученным в результате выражения выражения в контексте и если положения, которые следует за ними. “

Вот формула для понимания списка. Это одна вещь, которую вы должны взять домой из этого учебника.

Формула: Понимание списка состоит из двух частей.

«[‘+ выражение + контекст +’] ‘

Первая часть – это выражение. В приведенном выше примере это была переменная х Отказ Но вы также можете использовать более сложное выражение, такое как x.upper () Отказ Используйте любую переменную в своем выражении, которую вы определены в контексте в пределах Заявление Loop Отказ Смотрите этот пример:

whales = [x.upper() for x,y in customers if y>1000000]
print(whales)
# ['ANN']

Вторая часть – контекст Отказ Контекст состоит из произвольного количества и если пункты Отказ Одна цель контекста – определить (или ограничить) последовательность элементов, на которых мы хотим применить выражение. Вот почему вы иногда видите сложные ограничения, такие как это:

small_fishes = [x + str(y) for x,y in customers if y<1000000 if x!='John']
# (John is not a small fish...)
print(small_fishes)
# ['Alice120000', 'Zach44000']

Альбрехт, один из лояльных читателей моего курса электронной почты «Coffee Break Python», отметил, что вы можете сломать формулу, используя следующий план:

lst = [ for  in  if ] 

Подробное руководство по теме доступно бесплатно в этом руководстве на блог Finxter.

Функция лямбда 101.

Функция лямбда – это анонимная функция в Python. Начинается с ключевого слова лямбда После последующей запятой списком ноль или более аргументов, а затем толстой кишки и возвращаемой экспрессией. Например, лямбда х, у, z: x + y + z рассчитал бы сумму трех ценностей аргумента х + y + z Отказ

Вот практический пример, где функции лямбда используются для создания функции инкрементации:

Упражнение : Добавьте еще один параметр в функцию лямбда!

Посмотрите видео или прочитайте статью, чтобы узнать о функциях Lambda в Python:

Головоломка Отказ Вот небольшой головоломка для проверки ваших навыков:

def make_incrementor(n):
   return lambda x: x + n
f = make_incrementor(42)
print(f(0))
print(f(1))

Чтобы проверить ваше понимание, вы можете решить этот точный кода головоломки с темой «лямбда функции в Python» на мой Код Finxter Code Puzzle App Отказ

Найти подробную статью о лямбдах.

Альтернативный метод 3: Карта () + lambda + list ()

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

# Method 3: map() + lambda + list()
a = [1, 2, 3, 4]
b = list(map(lambda x: x+1, a))
print(b)
# [2, 3, 4, 5]

Вы можете узнать о карта () Функция в моем видеоурок здесь:

Тем не менее, было бы лучше, если вы избегали функции карты – это не читаемое и менее эффективное, чем понимание списка.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.