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-код более эффективным способом.