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» означают двоичную запись и двоичное чтение.
Спасибо за прочтение!
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Посмотреть больше контента в разделе Кодирование на уровень выше
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн
- 🚀👉 Вакансии для инженеров-программистов