Сравнение hashmap C/C++ с dict Python (часть 3)
Автор: Eugene Kaddo
Данная статья продолжит рассмотрение темы отличия hash table C/C++ от dict Python и способов их реализации.
Читать пост в Telegram
Файлы к посту, можно получить в боте по коду: 646514
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #Сравнение_Python_и_C #C #C++ #hash_map #hash_table #dict
Автор: Eugene Kaddo
Данная статья продолжит рассмотрение темы отличия hash table C/C++ от dict Python и способов их реализации.
Читать пост в Telegram
Файлы к посту, можно получить в боте по коду: 646514
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #Сравнение_Python_и_C #C #C++ #hash_map #hash_table #dict
🔥6🤩2
🐍 Телеграм-канал PythonProgggg 📢
Хотите глубже погрузиться в увлекательный мир программирования на Python? Не ищите дальше, чем телеграм-канал PythonProgggg! 🚀
Присоединяйтесь к нам на https://t.iss.one/PythonProgggg и приготовьтесь к ежедневной порции благ Python! 🎉
🔸 Почему стоит выбрать PythonProgggg?
✅ Образовательный контент: мы предоставляем высококачественный образовательный контент по программированию на Python, начиная от обучающих программ для начинающих и заканчивая продвинутыми концепциями.
✅ Полезные ресурсы: будьте в курсе последних библиотек, фреймворков и инструментов Python. Мы поможем вам найти лучшие ресурсы для улучшения ваших навыков работы с Python.
✅ Взаимодействие с сообществом: присоединяйтесь к активному сообществу энтузиастов Python, где вы можете задавать вопросы, делиться своими знаниями и участвовать в обсуждениях.
✅ Примеры кода: черпайте вдохновение из множества практических примеров кода, которые вы можете изучить и применить в своих собственных проектах.
✅ Будьте в курсе: мы держим вас в курсе последних новостей и тенденций в мире Python, гарантируя, что вы никогда не пропустите важные обновления.
Не упустите возможность стать профессионалом Python! Присоединяйтесь к нам сегодня на https://t.iss.one/PythonProgggg. Вместе раскроем весь потенциал программирования на Python! 🐍💻
Хотите глубже погрузиться в увлекательный мир программирования на Python? Не ищите дальше, чем телеграм-канал PythonProgggg! 🚀
Присоединяйтесь к нам на https://t.iss.one/PythonProgggg и приготовьтесь к ежедневной порции благ Python! 🎉
🔸 Почему стоит выбрать PythonProgggg?
✅ Образовательный контент: мы предоставляем высококачественный образовательный контент по программированию на Python, начиная от обучающих программ для начинающих и заканчивая продвинутыми концепциями.
✅ Полезные ресурсы: будьте в курсе последних библиотек, фреймворков и инструментов Python. Мы поможем вам найти лучшие ресурсы для улучшения ваших навыков работы с Python.
✅ Взаимодействие с сообществом: присоединяйтесь к активному сообществу энтузиастов Python, где вы можете задавать вопросы, делиться своими знаниями и участвовать в обсуждениях.
✅ Примеры кода: черпайте вдохновение из множества практических примеров кода, которые вы можете изучить и применить в своих собственных проектах.
✅ Будьте в курсе: мы держим вас в курсе последних новостей и тенденций в мире Python, гарантируя, что вы никогда не пропустите важные обновления.
Не упустите возможность стать профессионалом Python! Присоединяйтесь к нам сегодня на https://t.iss.one/PythonProgggg. Вместе раскроем весь потенциал программирования на Python! 🐍💻
Приветствую!
Сегодня пятница, а это значит, что настало время для нашего еженедельного кинопоста! На этой неделе мы предлагаем вам погрузиться в мир загадок и таинственных манипуляций. Эта история захватит вас с первых минут и не отпустит до самого конца. Вас ждет увлекательное путешествие в мир гипноза, где границы реальности и иллюзии стираются, оставляя зрителя в постоянном напряжении.
Фильм: Гипнотик
Год: 2024
У детектива Дэнни Рурка похищают 7-летнюю дочь. Преступник был пойман, но девочку найти так и не удалось. Пытаясь справиться с трагедией, опытный коп начинает посещать психотерапевта. Однажды Дэнни и его напарник получают ориентировку на возможное ограбление банка. Прибыв на место, Рурк обращает внимание на подозрительного мужчину, который при помощи кодовых слов начинает контролировать окружающих и пытается осуществить ограбление.
Приятного просмотра и до встречи на следующей неделе с новым кинопостом!
Сегодня пятница, а это значит, что настало время для нашего еженедельного кинопоста! На этой неделе мы предлагаем вам погрузиться в мир загадок и таинственных манипуляций. Эта история захватит вас с первых минут и не отпустит до самого конца. Вас ждет увлекательное путешествие в мир гипноза, где границы реальности и иллюзии стираются, оставляя зрителя в постоянном напряжении.
Фильм: Гипнотик
Год: 2024
У детектива Дэнни Рурка похищают 7-летнюю дочь. Преступник был пойман, но девочку найти так и не удалось. Пытаясь справиться с трагедией, опытный коп начинает посещать психотерапевта. Однажды Дэнни и его напарник получают ориентировку на возможное ограбление банка. Прибыв на место, Рурк обращает внимание на подозрительного мужчину, который при помощи кодовых слов начинает контролировать окружающих и пытается осуществить ограбление.
Приятного просмотра и до встречи на следующей неделе с новым кинопостом!
🔥4
Что выведет этот код? №43
Задача:
Вы разрабатываете API для обработки информации о заказах в интернет-магазине. Требуется создать Pydantic-модель
-
-
Посмотрите на код ниже и выберите, что он выведет:
Задача:
Вы разрабатываете API для обработки информации о заказах в интернет-магазине. Требуется создать Pydantic-модель
Order, которая принимает список товаров, каждый из которых представлен как словарь с полями id и quantity. Используйте Pydantic для преобразования и проверки данных:-
id должен всегда быть строкой;-
quantity — целым числом, и если меньше или равен нулю, должно автоматически подставляться значение по умолчанию — 1.Посмотрите на код ниже и выберите, что он выведет:
🔥2
Что выведет код с изображения? №43
Anonymous Quiz
13%
[Item(id='123', quantity=-5), Item(id='456', quantity=3), Item(id='789', quantity=1)]
25%
[Item(id='123', quantity=1), Item(id='456', quantity=3), Item(id='789', quantity=1)]
8%
[Item(id='123', quantity=5), Item(id='456', quantity=3), Item(id='789', quantity=1)]
54%
ValidationError
🔥3
Вчерашняя задача оказалась не сложной для большинства из вас. Правильный ответ выбрали 67% участников. Давайте разберем подробно, почему именно так и как работает данный код. Это поможет лучше понять тонкости работы Pydantic, особенно с валидацией и обработкой данных в моделях.
Задача:
Вы разрабатываете API для обработки информации о заказах в интернет-магазине. Требуется создать Pydantic-модель
-
-
Код задачи:
**Что происходит в коде?**
1. Класс Item
Для каждого товара в заказе создается отдельный объект
- Преобразование id к строке: К полю
- Проверка quantity на положительное значение: Поле
2. Класс Order
Класс
Передаваемые данные `order_data`
- Первый элемент:
- Поле
- Поле
- Второй элемент:
-
-
- Третий элемент:
- Поле
- Поле
Почему возникает ошибка?
При создании объекта
Правильный ответ:
Таким образом,
Задача:
Вы разрабатываете API для обработки информации о заказах в интернет-магазине. Требуется создать Pydantic-модель
Order, которая принимает список товаров, каждый из которых представлен как словарь с полями id и quantity. Используйте Pydantic для преобразования и проверки данных:-
id должен всегда быть строкой;-
quantity — целым числом, и если меньше или равен нулю, должно автоматически подставляться значение по умолчанию — 1.Код задачи:
from pydantic import BaseModel, Field, ValidationError, field_validator
class Item(BaseModel):
id: str
quantity: int = Field(default=1, gt=0)
@field_validator("id", mode="before")
def id_to_str(cls, v):
return str(v)
class Order(BaseModel):
items: list[Item]
order_data = {"items": [{"id": 123, "quantity": -5}, {"id": "456", "quantity": "3"}, {"id": 789}]}
order = Order(**order_data)
print(order.items)
**Что происходит в коде?**
1. Класс Item
Для каждого товара в заказе создается отдельный объект
Item. Он содержит два поля: id и quantity.- Преобразование id к строке: К полю
id применяется валидатор @field_validator("id", mode="before"). Этот валидатор срабатывает перед основной валидацией и преобразует переданное значение в строку. Это значит, что, например, числовой id 123 автоматически конвертируется в строку "123". Таким образом, независимо от исходного типа данных, id всегда становится строкой.- Проверка quantity на положительное значение: Поле
quantity имеет ограничение gt=0, что означает "должно быть больше нуля". Если в данных указывается значение, не соответствующее этому условию (например, отрицательное число), Pydantic выбрасывает ValidationError. Также quantity имеет значение по умолчанию — 1. Если quantity не указано, автоматически подставится это значение.2. Класс Order
Класс
Order содержит список товаров items, где каждый элемент должен соответствовать модели Item. Благодаря этому, при создании заказа Pydantic автоматически проверяет каждый элемент items и применяет к ним правила, заданные в Item.Передаваемые данные `order_data`
- Первый элемент:
{"id": 123, "quantity": -5}- Поле
id преобразуется в строку "123" с помощью валидатора id_to_str.- Поле
quantity указано как -5, что нарушает условие gt=0 (больше нуля). Поэтому при попытке создать объект Item с такими данными Pydantic выбросит ValidationError.- Второй элемент:
{"id": "456", "quantity": "3"}-
id уже строка, и ваПосмотрим на передаваемые данные:лидатор оставляет его как есть.-
quantity передан как строка "3", но Pydantic автоматически конвертирует её в целое число 3, что удовлетворяет условию gt=0.- Третий элемент:
{"id": 789}- Поле
id преобразуется в строку "789".- Поле
quantity не указано, поэтому используется значение по умолчанию 1.Почему возникает ошибка?
При создании объекта
Order Pydantic проверяет каждый элемент в списке items. Первый элемент нарушает условие gt=0 из-за отрицательного значения quantity, и это приводит к ValidationError. В результате объект Order не создается, и программа останавливается на этом этапе.Правильный ответ:
ValidationErrorТаким образом,
ValidationError помогает нам избежать ошибок при создании заказа с некорректными данными, таких как отрицательное количество. Этот инструмент позволяет создавать более надежные API, автоматически преобразуя и проверяя данные.🔥6🤩1
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (21.10.2024) Дайджест за предыдущую неделю
Вторник (22.10.2024) Хотите узнать, как использовать multiprocessing в Python для обхода ограничений GIL?
Среда (23.10.2024)
Четверг (24.10.2024) Сравнение hashmap C/C++ с dict Python (часть 3)
Пятница (25.10.2024) Пятничный кинорелакс
Суббота (26.10.2024) Задача
Воскресенье (27.10.2024) Текстовый разбор задачи
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (21.10.2024) Дайджест за предыдущую неделю
Вторник (22.10.2024) Хотите узнать, как использовать multiprocessing в Python для обхода ограничений GIL?
Среда (23.10.2024)
Четверг (24.10.2024) Сравнение hashmap C/C++ с dict Python (часть 3)
Пятница (25.10.2024) Пятничный кинорелакс
Суббота (26.10.2024) Задача
Воскресенье (27.10.2024) Текстовый разбор задачи
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
🔥7❤2👍2
Forwarded from Заметки на салфетке
Всем привет!
Наверное каждый программист помимо написания проектов на готовых библиотеках и фреймворках, хоть раз в жизни задумывался о написании своей библиотеки.
Такая мысль посетила недавно и меня, когда в работе над одним проектом, мне понадобилось использовать ЮКассу как способ оплаты. Однако, официальная библиотека имеет ряд недостатков, главный из которых заключается в том, что она синхронная.
И я задумался, а почему бы не переписать её на современных технологиях? Подумано - сделано! Я начал работу по переписываю официальной библиотеки.
И так, версия 0.1.1, что сделано на данный момент?
- Написаны модели данных платежа для запроса и ответа.
- Написан класс конфигурации и АПИ клиента
- Начат класс платежа. Написан и работает метод создания платежа.
Работы ещё много... Но, надеюсь, что это всё не зря)
Буду рад, если поставите звёздочку в репозитории проекта.
Ссылки:
- Репозиторий: https://github.com/proDreams/async_yookassa
- PyPi: https://pypi.org/project/async_yookassa/
Наверное каждый программист помимо написания проектов на готовых библиотеках и фреймворках, хоть раз в жизни задумывался о написании своей библиотеки.
Такая мысль посетила недавно и меня, когда в работе над одним проектом, мне понадобилось использовать ЮКассу как способ оплаты. Однако, официальная библиотека имеет ряд недостатков, главный из которых заключается в том, что она синхронная.
И я задумался, а почему бы не переписать её на современных технологиях? Подумано - сделано! Я начал работу по переписываю официальной библиотеки.
И так, версия 0.1.1, что сделано на данный момент?
- Написаны модели данных платежа для запроса и ответа.
- Написан класс конфигурации и АПИ клиента
- Начат класс платежа. Написан и работает метод создания платежа.
Работы ещё много... Но, надеюсь, что это всё не зря)
Буду рад, если поставите звёздочку в репозитории проекта.
Ссылки:
- Репозиторий: https://github.com/proDreams/async_yookassa
- PyPi: https://pypi.org/project/async_yookassa/
🔥15👏3👍2❤1⚡1🤩1🍓1🆒1
Знаете ли вы как использовать Docker Compose для оркестрации многоконтейнерных приложений?
Docker Compose упрощает управление многоконтейнерными приложениями, позволяя описывать сервисы, сети и тома в едином docker-compose.yml. Это облегчает развертывание и масштабирование сложных систем.
Пример файла для веб-приложения с PostgreSQL:
Web-сервис строится из Dockerfile в ./web, маппит порт 8000, использует db с данными в db_data, а volumes сохраняет данные между перезапусками.
Это поднимет все сервисы в фоне, настроит сети и тома автоматически.
Код на салфетке x Кусочки кода
Docker Compose упрощает управление многоконтейнерными приложениями, позволяя описывать сервисы, сети и тома в едином docker-compose.yml. Это облегчает развертывание и масштабирование сложных систем.
Пример файла для веб-приложения с PostgreSQL:
version: '3.8'
services:
web:
image: examplewebapp:latest
build: ./web
ports:
- "8000:8000"
depends_on:
- db
environment:
- DATABASE_URL=postgres://user:password@db:5432/mydb
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=mydb
volumes:
db_data:
Web-сервис строится из Dockerfile в ./web, маппит порт 8000, использует db с данными в db_data, а volumes сохраняет данные между перезапусками.
docker-compose up -d
Это поднимет все сервисы в фоне, настроит сети и тома автоматически.
Код на салфетке x Кусочки кода
🔥6
Приветствую!
Всех с пятницей, друзья! На этой неделе мы предлагаем вам погрузиться в захватывающую атмосферу триллера, который обещает держать вас в напряжении с первой до последней минуты, раскрывая перед вами историю, полную неожиданных поворотов и интригующих загадок.
Вас ждут великолепные актерские работы, напряженная атмосфера и глубокие размышления о человеческой природе и инстинкте самосохранения. Каждый персонаж сталкивается с собственными страхами и моральными дилеммами, что делает сюжет еще более увлекательным и непредсказуемым. Фильм заставит вас задуматься о том, на что способен человек, когда его жизнь висит на волоске.
Фильм: Ловушка
Год: 2024
Мужчина приводит 12-летнюю дочь на концерт восходящей поп-звезды и замечает, что вокруг слишком много полицейских. Разболтав продавца мерча, он выясняет, что данное мероприятие — ловушка для давно разыскиваемого серийного убийцы.
Приятного просмотра!
Всех с пятницей, друзья! На этой неделе мы предлагаем вам погрузиться в захватывающую атмосферу триллера, который обещает держать вас в напряжении с первой до последней минуты, раскрывая перед вами историю, полную неожиданных поворотов и интригующих загадок.
Вас ждут великолепные актерские работы, напряженная атмосфера и глубокие размышления о человеческой природе и инстинкте самосохранения. Каждый персонаж сталкивается с собственными страхами и моральными дилеммами, что делает сюжет еще более увлекательным и непредсказуемым. Фильм заставит вас задуматься о том, на что способен человек, когда его жизнь висит на волоске.
Фильм: Ловушка
Год: 2024
Мужчина приводит 12-летнюю дочь на концерт восходящей поп-звезды и замечает, что вокруг слишком много полицейских. Разболтав продавца мерча, он выясняет, что данное мероприятие — ловушка для давно разыскиваемого серийного убийцы.
Приятного просмотра!
🔥7👏1🤩1
Обновление библиотеки - AIOgram 3.14
Автор: Иван Ашихмин
🚀 Вышла новая версия Aiogram 3.14.0!
Подробности релиза со списком изменений на русском языке.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Telegram #aiogram #Код_на_салфетке #changelog #боты #обновление_библиотеки
Автор: Иван Ашихмин
🚀 Вышла новая версия Aiogram 3.14.0!
Подробности релиза со списком изменений на русском языке.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Telegram #aiogram #Код_на_салфетке #changelog #боты #обновление_библиотеки
🔥11🤩2👍1
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (28.10.2024) Дайджест за предыдущую неделю
Вторник (29.10.2024) Знаете ли вы как использовать Docker Compose для оркестрации многоконтейнерных приложений?
Среда (30.10.2024)
Четверг (31.10.2024)
Пятница (01.11.2024) Пятничный кинорелакс
Суббота (02.11.2024)
Воскресенье (03.11.2024) Обновление библиотеки - AIOgram 3.14
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (28.10.2024) Дайджест за предыдущую неделю
Вторник (29.10.2024) Знаете ли вы как использовать Docker Compose для оркестрации многоконтейнерных приложений?
Среда (30.10.2024)
Четверг (31.10.2024)
Пятница (01.11.2024) Пятничный кинорелакс
Суббота (02.11.2024)
Воскресенье (03.11.2024) Обновление библиотеки - AIOgram 3.14
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
🔥7⚡1👍1
Знаете ли вы, как Python управляет памятью с помощью подсчета ссылок и сборщика мусора?
Python использует комбинацию подсчета ссылок и циклического сборщика мусора. Каждый объект имеет счетчик ссылок, увеличивающийся при создании новой ссылки и уменьшающийся при ее удалении. Когда счетчик достигает нуля, память освобождается автоматически.
Однако подсчет ссылок не справляется с циклическими ссылками, где объекты ссылаются друг на друга. Такие ситуации возникают, например, в деревьях, где узлы хранят ссылки на родителей, или в связанных списках с двунаправленными связями. Например:
Здесь объекты alice и bob ссылаются друг на друга. Счетчики ссылок не достигнут нуля, и память не будет освобождена. Для решения этой проблемы Python использует циклический сборщик мусора, который обнаруживает и удаляет такие циклы, предотвращая утечки памяти.
Код на салфетке x Кусочки кода
Python использует комбинацию подсчета ссылок и циклического сборщика мусора. Каждый объект имеет счетчик ссылок, увеличивающийся при создании новой ссылки и уменьшающийся при ее удалении. Когда счетчик достигает нуля, память освобождается автоматически.
Однако подсчет ссылок не справляется с циклическими ссылками, где объекты ссылаются друг на друга. Такие ситуации возникают, например, в деревьях, где узлы хранят ссылки на родителей, или в связанных списках с двунаправленными связями. Например:
class Employee:
def __init__(self, manager=None):
self.manager = manager
alice = Employee()
bob = Employee(alice)
alice.manager = bob
del alice
del bob
Здесь объекты alice и bob ссылаются друг на друга. Счетчики ссылок не достигнут нуля, и память не будет освобождена. Для решения этой проблемы Python использует циклический сборщик мусора, который обнаруживает и удаляет такие циклы, предотвращая утечки памяти.
Код на салфетке x Кусочки кода
🔥9👍2👏1
Приветствую!
На этой неделе мы предлагаем вам комедийно-драматический фильм, который рассказывает о простом сапожнике. Главный герой, мастерски сыгранный Адамом Сэндлером, проходит через череду комичных и трогательных ситуаций, открывая для себя новые грани жизни и понимания других людей. Фильм наполнен теплом, юмором и добротой, что делает его идеальным для семейного просмотра или уютного вечера в компании друзей.
Фильм: Сапожник
Год: 2014
Макс Симкин занимается ремонтом обуви в Нью-Йорке. Он работает в магазине, который передавался его семьей из поколения в поколение. Однажды, разочарованный своей скучной жизнью, Макс натыкается на волшебную реликвию, которая позволяет ему увидеть мир по-новому.
Устраивайтесь поудобнее и готовьтесь к увлекательному просмотру. Не забывайте делиться своими впечатлениями и мыслями в комментариях. Приятного просмотра!
На этой неделе мы предлагаем вам комедийно-драматический фильм, который рассказывает о простом сапожнике. Главный герой, мастерски сыгранный Адамом Сэндлером, проходит через череду комичных и трогательных ситуаций, открывая для себя новые грани жизни и понимания других людей. Фильм наполнен теплом, юмором и добротой, что делает его идеальным для семейного просмотра или уютного вечера в компании друзей.
Фильм: Сапожник
Год: 2014
Макс Симкин занимается ремонтом обуви в Нью-Йорке. Он работает в магазине, который передавался его семьей из поколения в поколение. Однажды, разочарованный своей скучной жизнью, Макс натыкается на волшебную реликвию, которая позволяет ему увидеть мир по-новому.
Устраивайтесь поудобнее и готовьтесь к увлекательному просмотру. Не забывайте делиться своими впечатлениями и мыслями в комментариях. Приятного просмотра!
🔥5🤩2👏1
Что выведет этот код? №44
Задача:
Вы работаете над алгоритмом, который должен выбрать из списка только те числа, которые соответствуют определённым условиям. Однако коллега написал код, и теперь вам нужно понять, что этот код вернёт. В коде используются хитрые конструкции и работа с функциями. Попробуйте предугадать результат, не запуская код.
Задача:
Вы работаете над алгоритмом, который должен выбрать из списка только те числа, которые соответствуют определённым условиям. Однако коллега написал код, и теперь вам нужно понять, что этот код вернёт. В коде используются хитрые конструкции и работа с функциями. Попробуйте предугадать результат, не запуская код.
🔥4
Что выведет код с изображения? №44
Anonymous Quiz
6%
[2, 3, 5, 22]
17%
[3, 5, 10, 22]
50%
[2, 3, 5, 10, 22]
11%
[2, 3, 10, 21, 22]
17%
[2, 3, 5, 10, 15, 21, 22]
🔥5
Вчерашняя задача была несложной, но требовала знаний простых чисел и внимательности. Правильный ответ выбрали около 50% участников! Давайте разберём подробно как работает данный код. Это поможет лучше понять использование функций для проверки числовых свойств и работы с условными выражениями.
Задача:
Вы разрабатываете алгоритм, который отбирает из списка только те числа, которые либо простые, либо чётные. Программа вызывает несколько функций и использует списковые включения, которые помогают сделать код более компактным. Разберём, как он работает и что вернёт.
Код задачи:
Пояснения по коду:
1. Функция `filter_numbers`:
- Эта функция принимает список чисел
- Используется списковое включение:
- Здесь каждый элемент
2. Функция `is_prime`:
- Эта функция проверяет, является ли число простым.
- Простое число — это число, большее 1, которое делится только на 1 и само на себя. Например, 2, 3, 5 — простые числа.
- Сначала проверяется, меньше ли число 2. Если да, то оно точно не простое (например, 0 и 1 не являются простыми).
- Если число больше 2, то с помощью функции
3. Функция `is_even`:
- Она возвращает
- Для этого проверяется, делится ли число на 2 без остатка:
4. Применение функций к списку `sequence`:
- В переменной
- Функция
Шаги выполнения и результат:
1. 2 — чётное, добавляем.
2. 3 — простое, добавляем.
3. 5 — простое, добавляем.
4. 10 — чётное, добавляем.
5. 15 — не чётное и не простое, пропускаем.
6. 21 — не чётное и не простое, пропускаем.
7. 22 — чётное, добавляем.
Ожидаемый результат:
Вывод:
Этот код фильтрует список, оставляя только чётные или простые числа. Это может быть полезно для задач, где важны свойства чисел, такие как простота или чётность.
Задача:
Вы разрабатываете алгоритм, который отбирает из списка только те числа, которые либо простые, либо чётные. Программа вызывает несколько функций и использует списковые включения, которые помогают сделать код более компактным. Разберём, как он работает и что вернёт.
Код задачи:
def filter_numbers(
numbers: list[int],
) -> list[int]:
return [
x
for x in numbers
if is_prime(x) or is_even(x)
]
def is_prime(num: int) -> bool:
if num < 2:
return False
return all(
num % i != 0
for i in range(2, int(num**0.5) + 1)
)
def is_even(num: int) -> bool:
return num % 2 == 0
sequence = [2, 3, 5, 10, 15, 21, 22]
result = filter_numbers(sequence)
print(result)
Пояснения по коду:
1. Функция `filter_numbers`:
- Эта функция принимает список чисел
numbers и возвращает новый список, содержащий только те числа, которые проходят проверку на простоту или чётность.- Используется списковое включение:
[x for x in numbers if is_prime(x) or is_even(x)].- Здесь каждый элемент
x из numbers добавляется в результат, если он проходит проверку: is_prime(x) or is_even(x). То есть число добавляется в новый список, если оно простое (функция is_prime) или чётное (функция is_even).2. Функция `is_prime`:
- Эта функция проверяет, является ли число простым.
- Простое число — это число, большее 1, которое делится только на 1 и само на себя. Например, 2, 3, 5 — простые числа.
- Сначала проверяется, меньше ли число 2. Если да, то оно точно не простое (например, 0 и 1 не являются простыми).
- Если число больше 2, то с помощью функции
all() проверяется, что оно не делится на числа от 2 до квадратного корня из него. Это оптимизация, позволяющая сократить количество делений, ведь если число делится на какое-то число больше квадратного корня, то это уже не простое число.3. Функция `is_even`:
- Она возвращает
True, если число чётное, и False — если нечётное.- Для этого проверяется, делится ли число на 2 без остатка:
num % 2 == 0.4. Применение функций к списку `sequence`:
- В переменной
sequence хранится список чисел [2, 3, 5, 10, 15, 21, 22].- Функция
filter_numbers проверит каждый элемент списка на чётность или простоту. Если хотя бы одно из этих условий выполнено, число попадёт в результирующий список.Шаги выполнения и результат:
1. 2 — чётное, добавляем.
2. 3 — простое, добавляем.
3. 5 — простое, добавляем.
4. 10 — чётное, добавляем.
5. 15 — не чётное и не простое, пропускаем.
6. 21 — не чётное и не простое, пропускаем.
7. 22 — чётное, добавляем.
Ожидаемый результат:
[2, 3, 5, 10, 22].Вывод:
Этот код фильтрует список, оставляя только чётные или простые числа. Это может быть полезно для задач, где важны свойства чисел, такие как простота или чётность.
🔥5👍1👏1
Интересный факт
Конструкция
Конструкция
[for ... in ...], используемая в нашем коде, называется списковое включение (или list comprehension на английском). Это удобный способ быстро создать новый список на основе существующей коллекции, применяя к его элементам условия или преобразования. Хотя правильное название — списковое включение, его часто называют просто "генератором" — это не совсем корректно, но распространено среди разработчиков.🔥5
Привет, друзья!
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (04.11.2024) Дайджест за предыдущую неделю
Вторник (05.11.2024) Знаете ли вы, как Python управляет памятью с помощью подсчета ссылок и сборщика мусора?
Среда (06.11.2024)
Четверг (07.11.2024)
Пятница (08.11.2024) Пятничный кинорелакс
Суббота (09.11.2024) Что выведет этот код?
Воскресенье (10.11.2024) Объяснение задачи
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
Прошла еще одна неделя, и у нас накопилось много интересных материалов: статьи, новости и полезные советы. Вот наш недельный дайджест:
Понедельник (04.11.2024) Дайджест за предыдущую неделю
Вторник (05.11.2024) Знаете ли вы, как Python управляет памятью с помощью подсчета ссылок и сборщика мусора?
Среда (06.11.2024)
Четверг (07.11.2024)
Пятница (08.11.2024) Пятничный кинорелакс
Суббота (09.11.2024) Что выведет этот код?
Воскресенье (10.11.2024) Объяснение задачи
Спасибо, что остаетесь с нами! Надеемся, что эти материалы будут вам полезны. Удачи в новой неделе!
С уважением,
Команда канала "Код на салфетке".
#дайджест #материалы #новости #код_на_салфетке
🔥5 3
Хотите узнать, как использовать генераторы в Python для эффективной работы с большими данными?
Генераторы в Python - это особый тип функций, которые возвращают объект-итератор. В отличие от обычных функций, они не выполняют весь код сразу, а "замораживаются" на каждом
Генераторы позволяют создавать итераторы, элементы которых вычисляются "лениво", то есть по мере необходимости. Это особенно полезно при работе с большими файлами, когда загрузка всего содержимого в память может привести к проблемам.
- Файл читается построчно, а не целиком
- В памяти хранится только одна строка в каждый момент времени
- Если в файле миллион строк, но нас интересуют только ошибки, мы не тратим память на хранение ненужных строк
Код на салфетке x Кусочки кода
Генераторы в Python - это особый тип функций, которые возвращают объект-итератор. В отличие от обычных функций, они не выполняют весь код сразу, а "замораживаются" на каждом
yield и возобновляют работу только при запросе следующего значения.Генераторы позволяют создавать итераторы, элементы которых вычисляются "лениво", то есть по мере необходимости. Это особенно полезно при работе с большими файлами, когда загрузка всего содержимого в память может привести к проблемам.
def read_logs(filename):
with open(filename) as file:
for line in file:
if '[ERROR]' in line:
yield line.strip()
for error in read_logs('server.log'):
print(f"Error found: {error}")
- Файл читается построчно, а не целиком
- В памяти хранится только одна строка в каждый момент времени
- Если в файле миллион строк, но нас интересуют только ошибки, мы не тратим память на хранение ненужных строк
Код на салфетке x Кусочки кода
🔥7
Вхожу в IT - telegram-bot (часть 2)
Автор: Eugene Kaddo
Данная статья продолжает цикл статей о том как я вхожу в IT product уровня в сфере Telegram-ботов на aiogram3. Тут я описываю сложности вхождения в коммерческий мир IT, высказываю свои мысли, рассказываю через какие трудности приходится пройти на старте продуктовой карьеры в IT.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #Стажировка #Бот #Aiogram #Курсы #Путь_в_IT #Обучение #Менторство #Код_Ревью
Автор: Eugene Kaddo
Данная статья продолжает цикл статей о том как я вхожу в IT product уровня в сфере Telegram-ботов на aiogram3. Тут я описываю сложности вхождения в коммерческий мир IT, высказываю свои мысли, рассказываю через какие трудности приходится пройти на старте продуктовой карьеры в IT.
Читать пост в Telegram
Пост на сайте
Поддержать проект на Boosty
Поддержать проект в Telegram
#Python #Стажировка #Бот #Aiogram #Курсы #Путь_в_IT #Обучение #Менторство #Код_Ревью
1🔥5🤩1