7 встроенных библиотек Python, которые необходимо знать

Стандартная библиотека Python значительно упрощает жизнь программистов, предоставляя широкий набор функций. Мы выбираем несколько библиотек, охватывающих структуры данных, файловые системы, сохраняемость данных и функциональное программирование — которые мы считаем наиболее важными — для просмотра. Если вы готовитесь к собеседованию или просто пытаетесь стать более опытным программистом на Python, это наши 7 лучших библиотек, которые вы должны знать.

1. Коллекции

Модуль «Коллекции» определяет некоторые полезные структуры данных, включая расширения массивов и словарей.

Коллекции.Счетчик

Collections.Counter полезен, поскольку он устанавливает значения по умолчанию для несуществующего ключа равными нулю. Можно удалить ключ так же, как можно удалить ключ в словаре.

>>> from collections import Counter
>>> c = Counter()
>>> c['nonexistent_key']
0
>>> c['a']=3
>>> c['b']=4 
>>> c
Counter({'a': 3, 'b':4})
>>> del c['a']
>>> c 
Counter({'b'}:4)

Коллекции.deque

Deque — это двусторонняя очередь. Наиболее распространенными операциями над двухсторонней очередью являются append, appendleft, pop и popleft. Все эти функции выполняются за время O(1), поскольку базовая структура данных представляет собой связанный список.

>>> from collections import deque
>>> d.append('c')
>>> d.appendleft('b')
>>> d.appendleft('a')
>>> print(d)
['a', 'b', 'c']

Collections.defaultDict

defaultDict позволяет вам установить значения словаря на некоторое предустановленное значение. Диктовка по умолчанию может быть инициализирована с использованием типа, такого как список, и в этом случае значение будет установлено равным

from collections import defaultdict
s = [('a', 1), ('a', 2), ('b', 3)]
>>> d = defaultdict(list)
>>> for k, v in s:
...     d[k].append(v)
...
>>> sorted(d.items())
>>> [('a':[1, 2]), ('b':[3])]

Collections.orderedDict

В обычном объекте Python Dict ключи не упорядочены. С другой стороны, OrderedDict поддерживает порядок ключей.

>>> form collections import OrderedDict
>>> d = OrderedDict.fromkeys('xyz')
>>> d.move_to_end('x')
>>> ''.join(d)
'yzx'
>>> d.move_to_end('y', last=False)
>>> ''.join(d)
'zxy'

2. Итертулс

Вы можете использовать Itertools вместо определения собственных итераторов при работе с такими операциями, как перестановки и декартовы произведения. Хотя создать собственный итератор несложно, использование Itertools делает ваш код более кратким и считается более идиоматичным.

Itertools.accumulate

Функция накопления принимает префиксные суммы массива.

>>> from itertools import accumulate
>>> x = [1, 2 ,3]
>>> res = accumulate(x)
>>> for item in result:
...    print(item)
[1, 3, 6]

Itertools.продукт

Функция продукта возвращает итератор, который перебирает декартово произведение двух или более списков.

>>> from itertools import product
>>> x = [1, 2]
>>> y = ['a', 'b']
>>> res = product(x, y) 
>>> for item in result:
...    print(item)
(1, 'a')
(2, 'a')
(1, 'b')
(2, 'b')

Itertools.permutations

Itertools.permutations дает вам все перестановки списка.

>>> from itertools import permutations
>>> x = [1, 2, 3]
>>> res= permutations(x)
>>> for each in res:
...    print(each)
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)

Itertools.repeat

Itertools.repeat возвращает итератор, который возвращает определенное значение заданное количество раз.

>>> from itertools import product
>>> for i in itertools.repeat("a", 3):
...    print(i)
a
a
a

3. Разделить пополам

bisect_left и bisect_right

Bisect дает вам очень полезные функции бинарного поиска: bisect_left и bisect_right. Bisect_left, например, возвращает крайний левый индекс, по которому нужно вставить элемент (отталкивая другие элементы вправо), чтобы сделать массив отсортированным. Bisect_right вставляет в самый правый индекс.

Бинарный поиск — обычная тема для интервью — вы можете использовать эту встроенную функцию в качестве подпрограммы, чтобы вам не пришлось реализовывать свой собственный бинарный поиск с нуля!

>>> from bisect import bisect_left
>>> x = [1, 2, 3, 3, 7, 9]
>>> bisect_left(x, 3)
2

4. Куча

Куча — одна из самых распространенных структур данных. По умолчанию куча, созданная с помощью heapify, является минимальной кучей. Операции push и pop в куче имеют логарифмическую временную сложность. Min-heap также является часто используемой структурой данных в интервью по программированию.

>>> from heapq import heappush, heappop, heapify
>>> x = [6, 2, 1, 4, 5]
>>> heapify([x)
>>> x[0]
1
>>> heappop(x) 
1 
>>> x[0]
2

5. os

Модуль os предоставляет функциональные возможности, относящиеся к операционной системе, включая функции для управления файловыми системами.

os.listdir

Эта функция выводит список всех файлов и каталогов на пути (к каталогу).

>>> import os
>>> os.listdir("/my_project")
.git 
.gitignore
src
tests

os.mkdir

Эта функция позволяет создать новый каталог.

>>> import os
>>> os.mkdir("/my_new_project")

os.rename

Эта функция переименовывает файл или каталог из src в dst.

>>> import os
>>> os.rename("/note1.txt", "/note2.txt")

os.is_dir и os.is_file

Эти функции позволяют узнать, соответствует ли путь файлу или каталогу.

>>> import os
>>> os.is_file("/note.txt")
true
>>> os.is_directory("/note.txt")

6. шутил

Модуль Shutil обеспечивает высокоуровневые операции с файлами и каталогами.

Shutil.copyfile

Copyfile копирует файл src в файл dst.

>>> import shutil
>>> src = "/tmp/note.txt"
>>> dst = "/usr/tom/note.txt"
>>> shutil.copyfile(src, dst)

Shutil.copy

Copy копирует файл src в новый файл или каталог dst.

7. Рассол

Сериализация и десериализация данных важна для любого языка программирования. Pickle позволяет превратить структуру данных Python в поток байтов.

>>> import pickle
>>> owner_to_pets = { "fred": "bunny", "dawson": "dog" }
>>> pickle.dump(owner_to_pets, open( "save.p", "wb" ) )

Чтобы загрузить файл рассола, мы используем load:

>>> owner_to_pets = pickle.load(open( "save.p", "rb"))
>>> owner_to_pets
{ "fred": "bunny", "dawson": "dog" }

«wb» и «rb» означают двоичную запись и двоичное чтение.

Спасибо за прочтение!

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь: