Набор полезных однострочных и почти однострочных конструкций python от youtube канала Digitalize.
Хоть все они давно известны, но почему-то далеко не все их используют ;)
1. Распаковка
x, y, z = input().strip().split()
2. map: Выполнение функции для каждого элемента последовательности
x, y, z = map(int, (x, y, z)
# Объединяем с предыдущим
x, y, z = map(int, input().strip().split())
3. reduce: Выполнение функции над всеми элементами последовательности (с накоплением результата)
from functools import reduce
result = reduce(lambda x, y: x * y, (x, y, z))
# Объединяем с предыдущим
result = reduce(lambda x, y: x * y, map(int, input().strip().split()))
# Злоупотреблять подобным не стоит из-за усложнения читаемости кода!
4. Включения
names = ["Христофор", "Адемар", "Тэя", "Стефания", "Архип"]
names_starts_a = [name for name in names if name.startswith("А")]
5. filter: фильтрация по элементам последовательности
names_starts_a = list(filter(lambda name: name.startswith("A"), names))
6. Быстрое копирование списков
numbers = [1, 2, 3]
another_numbers = numbers[:]
7. Разворот списка
inverted_numbers = numbers[::-1]
8. Проверка вхождения в список или кортеж:
if name in ('Алексей', 'Пётр', 'Христофор'): print(name)
9. Проверка трушности всех элементов последовательности
a = b = c = d = e = True
elems = (a, b, c, d, e)
if all(elems): print('All True')
10. Проверка трушности любого элемента последовательности:
if any(elems): print('All True')
11. Тернарный оператор
DEBUG = True # False
admin_email = 'dev_admin@site.ru' if DEBUG else 'prod_admin@site.ru'
12. Деклоративное выполнение функций по условию
class User:
def __init__(self, group:str):
self.group = group
user = User(group='admin')
group_to_process_methods = dict(
admin=process_admin_request,
manager=process_manager_request,
client=process_client_request
)
group_to_process_method[user.group](user, request)
Ну и естественно видео с канала с пояснениями всех конструкций:
Комментарии