Python, без сомнения, является одним из самых популярных языков программирования. Простой и легкий в освоении, он завоевал признание многочисленного сообщества.
Python — “самый мощный язык, который при этом можно читать”, — Пол Дюбуа.
Представляем 15 полезных приемов, которые пригодятся в решении повседневных проблем.
1. Наиболее частый элемент в списке
Это самый полезный лайфхак для поиска наиболее часто встречающегося элемента в списке. Представьте, что у вас есть список с кучей данных, и вам нужно найти в нем элемент с максимальной частотой употребления.
Большинство прибегает к использованию циклов для решения этой проблемы. Но вы можете упростить себе задачу, применив несколько встроенных функций.
lst = [1, 4, 4, 4, 2, 5, 6, 6, 7, 8, 9, 10]
frequent = max(set(lst), key=lst.count)
print(frequent) # 4
2. Подсчет количества элементов
Этот лайфхак полезен для подсчета всех появляющихся элементов с помощью встроенной библиотеки Python. Вместо использования циклических и условных операторов и прочей логики, просто следуйте приведенному ниже примеру кода.
# Импортируйте модуль
from collections import Counter
lst= [1, 2, 1, 3, 4, 1, 4, 3, 5, 9, 9, 10]
occurrences = Counter(lst)
print(occurrences) # Counter({1: 3, 3: 2, 4: 2, 9: 2, 2: 1, 5: 1, 10: 1})
3. Повторение элемента в списке
Чтобы увеличить количество строк, можно использовать звездочку *
. Но этот лайфхак применим и к спискам.
# Повторение элемента
lst1 = [5] * 3
lst2 = [4, 5] * 2
lst3 = ["Python", 6] * 3
print(lst1) # [5, 5, 5]
print(lst2) # [4, 5, 4, 5]
print(lst3) #['Python', 6, 'Python', 6, 'Python', 6]
4. Списковое включение (быстрый способ)
Списковое включение — самый эффективный способ итерации любого списка. Это итерирование однострочного списка с включением в него цикла. Посмотрите приведенный ниже пример кода, чтобы понять, как это работает.
# Обычный способ
num = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even = []
for x in num:
if x % 2 == 0:
even.append(x)
print(even) # [2, 4, 6, 8]
# Списковое включение
even = [e for e in num if e % 2==0]
print(even) # [2, 4, 6, 8]
5. Преобразование изменяемых данных в неизменяемые
Изменяемые данные (например, словари или списки) — это структуры, к которым могут быть добавлены новые значения.
Неизменяемые данные, в противоположность изменяемым, после создания остаются неизменными. Посмотрите, как можно преобразовать изменяемый тип данных в неизменяемый.
lst = [1, 2, 3] # Изменяемый список
newlist= frozenset(lst)
newlist.append(4) # Ошибка, теперь это изменить нельзя
6. Функция в одну строку
Этот метод с использованием лямбды позволит создавать лаконичные функции в одну строку. Взгляните на пример кода ниже.
Addition = lambda x, y, z : x + y + z
print(Addition(20, 40, 50)) # 110
7. Применение функции ко всем элементам в списке
Этот прием полезен в тех случаях, когда нужно применить функцию ко всем элементам списка, а не к каждому отдельно.
lst = ["python", "javaScript", "c++"]
lst = map(str.capitalize, lst)
print(list(lst)) # ['Python', 'Javascript', 'C++']
8. Возврат нескольких значений из функции
Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать. Ознакомьтесь с приведенным ниже примером кода.
def function():
return 10, 20, 30
print(function()) # (10, 20, 30)
9. Расчет времени выполнения
Этот простейший “трюк” поможет рассчитать время, необходимое для выполнения программы. Используя time-модуль, вы можете точно узнать, сколько времени требуется программе для выполнения кода.
import time
def fun():
for x in range(1000):
print(x)
start = time.time()
fun()
end = time.time()
total = end - start
print("Program takes ", total) # 0.24
10. Распечатывание ежемесячного календаря
А этот лайфхак — всего лишь скрытая функция Python, которая позволяет распечатывать ежемесячный календарь в формате таблицы.
import calendar
yy = 2021
mm = 7
# Отобразить календарь
print(calendar.month(yy, mm))
# На выходе
July 2021
Mo Tu We Th Fr Sa Su
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
11. Обратный список и строка
Скорее всего, вы используете обратную функцию для инверсионной записи списков или строк. Но знаете ли вы, как осуществить инверсию более эффективным способом?
lst = [1, 2, 3 ,4]
string= "Python Coder"
print(lst[::-1]) # [4, 3, 2, 1]
print(string[::-1]) # redoC nohtyP
12. Транспонирование 2d-массива
Этот лайфхак покажет, как выполнить транспонирование 2d-массива с помощью метода zip
. Посмотрите пример кода ниже.
my_list = [[1, 2], [3, 4], [5, 6]]
transpose = zip(*my_list)
print(list(transpose)) #[(1, 3, 5), (2, 4, 6)]
Как проходит транспонирование:
# [1, 2] [1, 3, 5]
# [3, 4] = [2, 4, 6]
# [5, 6]
13. Get Method для словаря
Большинство разработчиков используют скобки, чтобы получить значение из словаря. Но сейчас рекомендуется использовать Get method
.
При использовании метода скобок выдается ошибка, если ключ отсутствует. С помощью Get method
вы получите “None” .
my_dict = {'a': 1, 'b':2}
# Скобки
print(my_dict['c']) # Error (Ошибка)
# Get method
print(my_dict.get('c')) # None
14. Превращение списка в одну строку
Представьте, что у вас есть список строк, и вы хотите объединить все элементы в одну строку. Для этого вы наверняка будете перебирать каждый элемент в списке и присоединять к нему следующий.
Но есть более быстрый и эффективный способ выполнения той же задачи с помощью одной строки кода.
my_list = ["Python", "is", "a", "good", "Programming", "language"]
# Старый способ
string = ""
for x in my_list:
string=string + x + "
"print(string) # Python - хороший язык программирования
# Новый способ
print(" ".join(my_list) # Python - хороший язык программирования
15. Обработка ошибок во время выполнения
Это самый полезный совет для программистов, работающих с Python. Вы можете устранить ошибку и избавить программу от сбоев во время выполнения.
try:
# Какое-либо действие
except:
# Какое-либо действие на случай, если появляется ошибка
Заключение
Надеемся, что эти приемы и методы вам пригодятся. Рекомендуем продолжать практиковаться и каждый день узнавать что-то новое. Изучение лайфхаков не является чем-то обязательным. Но создавать свои собственные лайфхаки — это круто.
Читайте также:
- Отслеживание фокусированного времени с помощью Python
- Асинхронная многопоточность в Python
- 3 способа локального хранения и чтения учетных данных в Python
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Haider Imtiaz: Top Python Shortcuts