Трюки для начинающих чайников. Статья несёт ознакомительный характер.
🌍Для начала что такое 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))
['яблоки', 'бананы', 'апельсины']