12 почти однострочных конструкций от канала Digitalize

2357 0

Набор полезных однострочных и почти однострочных конструкций 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)

Ну и естественно видео с канала с пояснениями всех конструкций:

Комментарии

Контактные данные

 Россия, г. Москва