Python Tricks 101 (Часть 1)

Если вы использовали Python раньше, вы должны знать, что в этом прекрасном языке есть множество приемов и сокращений, которые можно использовать для значительного облегчения написания кода.

Я думаю, вы сможете найти хотя бы один крутой трюк из этого списка.

0. Понимание списка

Мы можем использовать for loops в одном операторе для создания list.

list1 = [i for i in range(0, 10)]
list2 = [2*i for i in range(0, 10)]
list3 = [3*i for i in list2]
print(list1)
print(list2)
print(list3)

Вывод:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[0, 6, 12, 18, 24, 36, 42, 48, 54]

1. Сжатие нескольких списков/кортежей/словарей

Функция zip() в Python принимает любое количество списков, кортежей или словарей. Затем он создает кортеж первого элемента каждого аргумента (итерируемый), затем еще один кортеж второго элемента каждого аргумента и так далее. Он возвращает список, содержащий все эти кортежи.

x = [1, 2, 3, 4, 5]
y = [10, 20, 30, 40, 50]
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
for x_item, y_item, dict_item in zip(x, y, d):
       print(x_item, y_item, d[dict_item], sep=",")

Вывод:

1, 10, 1
2, 20, 2
3, 30, 3
4, 40, 4
5, 50, 5

2. Кортеж с одним элементом

В Python, если вы инициализируете кортеж одним элементом. Он распознает его как кортеж. Вместо этого он берет элемент и присваивает его переменной. Например,

tup = ("Do not forget to give this article a clap")
print(tup)

Это просто распечатывает 'Don't Forget to give this article a clap' . Python просто считает это строкой. Но если вы хотите, чтобы это был кортеж, вам просто нужно добавить запятую после единственного элемента.

tup = ("Hello World",)
print(tup)

Вывод:

('Hello World',)

3. Объединение словарей

В Python существует специальная техника объединения словарей.

d1 = {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}
d2 = {"f": 6, "a": 2, "b": 2, "g": 7}
merged_dict = {**d1, **d2}
print(merged_dict)

Вывод:

{‘a’: 2, ‘b’: 2, ‘c’: 3, ‘d’: 4, ‘e’: 5, ‘f’: 6, ‘g’: 7}

4. Лямбда/анонимные функции

Нет объяснения. Просто взгляните на код.

x = lambda x,y : x+y
print(x(5, 10))

Вывод:

15

5. Вызов различных функций на основе условия

Python позволяет очень легко вызывать различные функции в зависимости от условия.

add = lambda x,y: x+y
subtract = lambda x,y: x-y
condition = 5 > 7
print((add if condition else subtract)(10, 5))

Вывод:

5

6. Инвертирование словаря с помощью zip()

Мы можем использовать функцию zip() для обмена ключами и значениями словаря Python.

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
new_d = dict(zip(d.values(), d.keys()))
print(new_d)

Вывод:

{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

7. Использование модуля pprint

Если вы работаете со сложными списками или словарями, вам очень поможет метод pprint() встроенной библиотеки Python pprint. Использование метода pprint() вместо метода print() выводит действительно сложные вещи, такие как большие словари, в более красивом виде, что помогает нам лучше их визуализировать. Здесь нет кода, вам просто нужно попробовать.

8. Использование метода dir()

Вы можете использовать метод dir() в Python, чтобы просмотреть все атрибуты и методы, которые имеет класс, к которому принадлежит аргумент.

print(dir("Follow Me !!!!"))

Эта строка кода выводит атрибуты и методы, которые может предложить класс String.

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

9. Функция Python enumerate()

Функция enumerate() просто возвращает индекс и элемент из списка, который мы передаем в метод в качестве аргумента.

lst = [0, 10, 20, 30, 40]
for index, item in enumerate(lst):
    print(f”Index: {index}, item: {item}”)

Вывод:

Index: 0, item: 0
Index: 1, item: 10
Index: 2, item: 20
Index: 3, item: 30
Index: 4, item: 40

10. Сброс ограничения рекурсии Python

Python ограничивает предел рекурсии до 1000. Мы можем сбросить его значение с помощью модуля sys.

import sys
print("Default Recursion Limit =", sys.getrecursionlimit())
sys.setrecursionlimit(1001)
print("New Recursion Limit =", sys.getrecursionlimit())

Вывод:

Default Recursion Limit = 1000
New Recursion Limit = 1001

Я надеюсь, вы нашли хотя бы один прием, который вы могли бы добавить в свой арсенал Python, чтобы писать более качественный Pythonic-код более эффективным способом.