Новое Распределяем каналы MAX по категориям и территориям. Читать новость
Открытый канал ID 76892779350029

Питоша | Python

🐍 Python — это не только синтаксис. Разбираем код, алгоритмы, данные, интересные задачи и то, что не всегда очевидно с первого взгляда.

Каналов в рубрике
2 095
Место этого канала
№ 848
Открыть рубрику →
Открыть в MAX

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

Загружаем изображение…
Загружаем изображение…
🐍 Работаем с несколькими списками в Python

Допустим, у нас есть два списка: товары и их цены. Было бы удобно объединить их, чтобы потом находить цену по названию товара.

С zip() это можно сделать одной строкой:

products = ["Хлеб", "Молоко", "Сыр"]
prices = [50, 120, 350]

catalog = dict(zip(products, prices))


Теперь, чтобы узнать цену молока, достаточно написать:

print(catalog["Молоко"]) # 120

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

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 24
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Как пронумеровать элементы списка

Допустим, нужно вывести на экран список действий:
actions = ["Создать файл", "Открыть файл", "Выйти"]


Чтобы сразу добавить номера, удобно использовать enumerate():
for number, action in enumerate(actions, start=1): print(f"{number}. {action}")


Получится:
1. Создать файл
2. Открыть файл
3. Выйти


Такой вариант пригодится для меню, списков и шагов инструкции — везде, где рядом с элементом нужен его номер. start=1 позволяет сразу начать нумерацию с единицы.

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 64
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
all() и any() — когда условий становится много

С and и or всё удобно, пока проверок две-три:

if age >= 18 and has_ticket and not banned:
print("Можно входить")


Но иногда проверок не просто много — их количество ещё и заранее неизвестно. Например, мы получили список пользователей и хотим понять: все ли совершеннолетние?
Можно было бы проверять каждого отдельно, но в Python для таких случаев есть all():

ages = [24, 31, 19, 27]

all(age >= 18 for age in ages)
# True


Здесь для каждого возраста получается отдельный результат: True или False, а all() отвечает уже на общий вопрос — все проверки прошли?

А если нужен другой вопрос — есть ли хотя бы один подходящий элемент? — используется any():

prices = [1200, 850, 2400, 600]

any(price < 1000 for price in prices)
# True


То есть здесь мы спрашиваем: есть ли среди товаров хотя бы один дешевле 1000.

И это важное отличие от and и or, о которых говорили в прошлом посте: and и or могут вернуть само значение, например строку или число, а all() и any() всегда возвращают True или False.
Особенно удобно это становится, когда список меняется. Сегодня в нём 3 элемента, завтра 30 — само условие переписывать не нужно.

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 86
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Обычно and и or мы впервые встречаем внутри if:

if age >= 18 and has_ticket:
print("Можно входить")


Здесь всё привычно: Python проверяет условия и решает, выполнять блок или нет.
Но and и or можно встретить и без if. Например:

name = user_name or "Гость"

Если имя есть — останется оно. Если строка пустая — подставится "Гость".

То есть and и or пригодятся не только в условиях — с их помощью можно ещё и выбрать, какое значение использовать.

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 61
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Почему True связан с 1?

В ранних версиях Python отдельного типа bool не было. Результат проверки «истина или ложь» обычно представлялся целыми числами: 1 означала истину, 0 — ложь.
Позже в языке появились специальные значения True и False и отдельный тип bool. Но старое поведение уже использовалось в программах, поэтому совместимость сохранили: bool сделали подклассом int.

Поэтому:

print(isinstance(True, bool)) # True
print(isinstance(True, int)) # True

print(int(True)) # 1
print(int(False)) # 0

True при этом не становится обычным числом — его тип всё равно bool. Но в числовом контексте он ведёт себя как 1, а False — как 0.

Отсюда уже понятнее и такое сравнение:

print(True == 1) # True
print(1 == 1.0) # True
print(True == 1.0) # True


1 и 1.0 относятся к разным типам — int и float, — но представляют одно и то же числовое значение: единицу. А True, благодаря устройству bool, тоже сравнивается с этой единицей как равное значение.


Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 64
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
🐍 Зачем в Python нужен set?

Представим реальную задачу: из одной системы пришёл список ID пользователей, которые открывали приложение, а из другой — ID тех, кто совершил покупку. В обоих списках могут быть повторы.

opened = [101, 102, 103, 103, 104, 105]
bought = [103, 104, 104, 108]

Нужно быстро найти пользователей, которые и открывали приложение, и покупали.

opened = set(opened)
bought = set(bought)

print(opened & bought)
# {103, 104}


Заодно set убрал дубли, а пересечение & оставило только общие ID.

И ещё: пустое множество создаётся как set(), а {} — это пустой словарь. Так исторически сложилось: словари появились в Python раньше множеств, и запись с фигурными скобками уже была занята под dict.

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 53
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
🐍 Освежим знания об индексах и срезах в Python

Вспомним, как работают индексы с начала и с конца

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 57
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
🐍Моржовый оператор в Python — :=

Название у него странное ровно до того момента, пока не посмотришь на сами символы: : — глаза, = — бивни.
Но интереснее другое: := умеет не только присвоить значение переменной, но и сразу использовать это значение в выражении.
Иногда это действительно делает код короче и удобнее. А иногда — наоборот, только усложняет чтение. Поэтому морж полезен не везде.

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 58
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
🐍Условия в Python: if, elif, else

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

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 53
Перейти в пост Открыть в MAX Сообщить о неточности
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
Загружаем изображение…
🐍 Сравнение объектов в Python

Для сравнения в Python используются == и is. На первый взгляд они похожи, но работают совершенно по-разному.
На одних и тех же значениях один оператор может вернуть True, а другой — False. Поэтому важно понимать, что именно проверяет каждый из них.
Разберёмся, как работают == и is и когда какой использовать.

Подписывайтесь, если хотите лучше разбираться в Python.
Питоша | Python
Просмотры: 61
Перейти в пост Открыть в MAX Сообщить о неточности
Вся лента — после бесплатной регистрации
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «Питоша | Python» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти