Найти в Дзене
Креативный дизайн

Эстетика и производительность: Генерация списков в Python с помощью List Comprehensions

В этой статье мы рассмотрим способ улучшения производительности и читаемости кода в Python с помощью так называемых list comprehensions (предоставление списков). Конкретно, мы разберем задачу, где мы увеличиваем цены на лекарства в зависимости от процентного повышения, ввода пользователя и демонстрацию, как это можно сделать более лаконично и элегантно с использованием list comprehensions. Мы хотим вычислить новые цены на лекарства, основываясь на процентных изменениях, введенных пользователем. У нас уже есть ведущий список цен, и нам нужно создать новые списки для каждого квартала (2 и 3 кварталов), учитывая повышение цен. Тот же код ниже для копирования и вставки в программу. Не забывайте про необходимый отступ пробелами в определённых местах в начале строки, так как код на сервере блога может отображаться некорректно. def cost_increase(percent, price):
return round(price * (1 + percent / 100), 2)
prices_now = [159.42, 566.28, 1002.25, 644.56, 120.58]
second_percent = int(inpu
Оглавление

В этой статье мы рассмотрим способ улучшения производительности и читаемости кода в Python с помощью так называемых list comprehensions (предоставление списков). Конкретно, мы разберем задачу, где мы увеличиваем цены на лекарства в зависимости от процентного повышения, ввода пользователя и демонстрацию, как это можно сделать более лаконично и элегантно с использованием list comprehensions.

Описание задачи

Мы хотим вычислить новые цены на лекарства, основываясь на процентных изменениях, введенных пользователем. У нас уже есть ведущий список цен, и нам нужно создать новые списки для каждого квартала (2 и 3 кварталов), учитывая повышение цен.

Код программы

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

def cost_increase(percent, price):
return round(price * (1 + percent / 100), 2)


prices_now = [159.42, 566.28, 1002.25, 644.56, 120.58]
second_percent = int(input('Повышение цены на лекарство во второй квартал: '))
third_percent = int(input('Повышение цены на лекарство в третий квартал: '))

prices_second_quarter = [cost_increase(second_percent, i_prices) for i_prices in prices_now]
prices_third_quarter = [cost_increase(third_percent, i_prices) for i_prices in prices_second_quarter]

print('Сумма цен за каждый второй и третий квартал: ', round(sum(prices_now), 2), round(sum(prices_second_quarter), 2), round(sum(prices_third_quarter), 2))

Построчный подробный разбор кода

def cost_increase(percent, price): # Простая функция с передачей процента (percent) и цены (price)
return round(price * (1 + percent / 100), 2) # Возвращаем процент с округлением цены до копеек

  • Определяем функцию cost_increase, которая принимает два аргумента: percent и price.
  • Функция возвращает цену, увеличенную на указанный процент, с округлением до двух знаков после запятой.

prices_now = [159.42, 566.28, 1002.25, 644.56, 120.58]

  • Создаем список prices_now, который содержит текущие цены на лекарства.

second_percent = int(input('Повышение цены на лекарство во второй квартал: ')) # Запрос у пользователя прогнозируемое повышение цены в процентах в следующем (втором) квартале
third_percent = int(input('Повышение цены на лекарство в третий квартал: '))
# Запрос у пользователя прогнозируемое повышение цены в процентах в следующем за вторым (третьем) квартале

  • Запрашиваем у пользователя прогнозируемое повышение цен в процентах для второго и третьего кварталов, преобразуем ввод в целые числа.

prices_second_quarter = [cost_increase(second_percent, i_prices) for i_prices in prices_now] # Генерация списка цен за 2 квартал. После "=" идёт expression (Выражение). Выражение определяет каким действием мы будем заполнять список. Здесь может быть любое вычисление, либо любое допустимое выражение, которое возвращает значение. В нашем случае это функция, которая будет передавать цену (значение). Она будет передавать уже подсчитанный результат. В качестве аргумента мы будем передавать сам процент (i_prices) и переменную цикла, которая используется для прохождения по списку (prices_now). И далее идёт процесс генерации нашего нового цикла.

  • Используем list comprehension для генерации списка новых цен prices_second_quarter, применяя функцию cost_increase к каждой цене из списка prices_now с учетом процента.

prices_third_quarter = [cost_increase(third_percent, i_prices) for i_prices in prices_second_quarter] # Генерация нового списка цен за 3 квартал не забывая о том что генерация пойдёт уже по новому списку.

  • Аналогично, создаем список prices_third_quarter с новыми ценами, увеличенными на новый процент, теперь уже используя список цен второго квартала.

print('Сумма цен за каждый второй и третий квартал: ', round(sum(prices_now), 2), round(sum(prices_second_quarter), 2), round(sum(prices_third_quarter), 2)) # Сумма элементов каждого списка в одну строку. Функция sum - сумма цен за каждый квартал. round округляет цены до двух знаков после запятой

  • Выводим суммы цен за каждый квартал, округляя их до двух знаков после запятой.

Результат работы кода:

Результат работы кода:

Повышение цены на лекарство во второй квартал: 0
Повышение цены на лекарство в третий квартал: 10
Сумма цен за каждый второй и третий квартал:  2493.09 2493.09 2742.41
Результат работы кода: Повышение цены на лекарство во второй квартал: 0 Повышение цены на лекарство в третий квартал: 10 Сумма цен за каждый второй и третий квартал: 2493.09 2493.09 2742.41

Заключение

Использование list comprehensions в Python упрощает код, делает его более читаемым и часто более производительным. То есть такой код ускоряет работу компьютера и имеет более эстетично красивый код. Вместо традиционного цикла for, который занимает лишние строки кода, мы можем с легкостью выразить ту же логику в одной строке. Это особенно полезно при работе с большими данными.

Рекомендации по усовершенствованию кода

  1. Обработка ошибок: Добавить обработку ошибок на случай некорректного ввода, чтобы избежать сбоев программы.
  2. Использование NumPy: Если список цен будет значительным, можно рассмотреть использование библиотеки NumPy для повышения производительности при выполнении операций с массивами.
  3. Создание функций: Выделить отдельные функции для более сложных шагов анализа данных, такие как вычисление сумм, чтобы упростить основной код.
  4. Документация: Добавить комментарии или документацию к функциям для лучшего понимания кода другими разработчиками.

В целом, освоение list comprehensions — это мощный инструмент, который поможет сделать ваш код более чистым и эффективным.

ПОЛЕЗНЫЕ РЕСУРСЫ:

---------------------------------------------------

Сообщество дизайнеров в VK

https://vk.com/grafantonkozlov

Телеграмм канал сообщества

https://t.me/grafantonkozlov

Архив эксклюзивного контента

https://boosty.to/antonkzv

Канал на Дзен

https://dzen.ru/grafantonkozlov

---------------------------------------------------

Бесплатный Хостинг и доменное имя

https://tilda.cc/?r=4159746

Мощная и надежная нейронная сеть Gerwin AI

https://t.me/GerwinPromoBot?start=referrer_3CKSERJX

GPTs — плагины и ассистенты для ChatGPT на русском языке

https://gptunnel.ru/?ref=Anton

---------------------------------------------------