Найти тему
Вечно Молодой

ТОП-5 трюков в Python 3, делающих код понятнее и быстрее.

Трюки для начинающих чайников. Статья несёт ознакомительный характер.

🌍Для начала что такое python?🌍

🐍Python – язык программирования с ясным синтаксисом, и многие удобные вещи в силу простоты часто не задерживаются в памяти.

🌏Ниже в подборке из 7 трюков в Python вы наверняка встретите приемы, знаний о которых не хватало в определенный момент в вашей практике.🌏

1️⃣Объединение списков без цикла.

Как бы вы решили задачу объединения списков разной длины без обхода элементов цикла? Вот как это можно сделать с помощью стандартной функции sum:

L = [[1, 2, 3], [4, 5], [6], [7, 8, 9]]

print(sum(L, []))

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Пусть и менее краткий, но более эффективный способ – применение модуля itertools:

import itertools

L = [[1, 2, 3], [4, 5], [6], [7, 8, 9]]

print(list(itertools.chain.from_iterable

Заметим, что при работе с последовательностями многие полезные решения находятся в модулях стандартной библиотеки /collections/(контейнерные структуры данных) и /itertools/(операции над последовательностями).

2️⃣Обмен значениями при помощи кортежей.

Один из популярных трюков в Python – обмен значениями без создания временной переменной. Способ применим для любого числа переменных.

a, b = 1, 2

print(a, b)

a, b = b, a

print(a, b)

1 2

2 1

В правой части инструкции присваивания последовательностей допускается указывать любые итерируемые объекты. Главное, чтобы число элементов слева равнялось числу элементов справа. Такое присваивание применяется и для сложных вложенных конструкций:

for ((a, b), c) in [((1, 2), 3), ((4, 5), 6)]:

print(a, b, c)

1 2 3

4 5 6

3️⃣Проверка на анаграммность.

Проверить, являются ли строки анаграммами (например, в результате случайной перестановки букв) поможет класс Counter модуля collections:

from collections import Counter

str1 = 'proglib'

str2 = 'prgolib'

print(Counter(str1) == Counter(str2))

True

4️⃣Нумерованные списки.

Задача нумерации элементов последовательности настолько распространена, что в Python есть соответствующая встроенная функция /enumerate/:

for i, item in enumerate(['a', 'b', 'c']):

print(i, item)

0 a

1 b

2 c

Для тех, кто уже знаком с /enumerate/, может оказаться новостью, что у функции есть второй аргумент, задающий начальное число:

for i, item in enumerate(['a', 'b', 'c'], 1):

print(i, item)

1 a

2 b

3 c

5️⃣Сортировка словаря по значениям.

Распространена практика использования словарей в качестве таблиц для хранения данных. Сортировка данных словаря по значениям ключей, а не самим ключам, нередко ставит в тупик. Задача решается довольно просто при помощи соответствующего аргумента функции сортировки:

d = {'яблоки':40, 'апельсины':80, 'бананы':70}

print(sorted(d, key=d.get))

['яблоки', 'бананы', 'апельсины']