Modules and Packages Flashcards

(11 cards)

1
Q

Что такое модуль

A

Модуль – функционально законченный фрагмент программы, оформленный в виде отдельного файла с исходным кодом или поименованной непрерывной её части. Модули позволяют разбивать сложные задачи на более мелкие в соответствии с принципом модульности. Файл, который содержит исходный код на языке Python, является модулем. Модули могут объединяться в пакеты и, далее, в библиотеки.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Какие операции поддерживают большинство последовательностей

A

x in s, x not in s – находится ли элемент x в последовательности s (для строк и последовательностей байтов – является ли x подстрокой s)
s + t – конкатенация последовательностей s и t
s * n, n * s – конкатенация n нерекурсивных копий последовательности s
s[i] – i-й элемент последовательности s
s[:i] - срез всех элементов последовательности s до i (не включая i)
s[i:] - срез всех элементов последовательности s от i до последнего элемента
s[-i:] - срез последних i элементов последовательности s
s[::-1] - перевернуть последовательность
s[i:j] – срез последовательности s от i до j (не включая j)
s[i:j:k] – срез последовательности s от i до j с шагом k (не включая j)
len(s) – длина последовательности s
min(s) – минимальный элемент последовательности s
max(s) – максимальный элемент последовательности s
s.index(x[, i[, j]]) – индекс первого вхождения x (опционально – начиная с позиции i и до позиции j)
s.count(x) – общее количество вхождений x в s
sum(s) – сумма элементов последовательности
Неизменяемые последовательности обычно реализуют операцию hash(s) – хеш-значение объекта.

Большинство изменяемых последовательностей поддерживают следующие операции:

s[i] = x – элемент с индексом i заменяется на x
s[i:j] = t, s[i:j:k] = t – элементы с индексами от i до j (с шагом k) заменяются содержимым итерабельного объекта t
del s[i:j], del s[i:j:k] – удаление соответствующих элементов из последовательности
s.append(x) – добавление x в конец последовательности
s.clear() – удаление всех элементов последовательности
s.copy() – нерекурсивная копия последовательности
s.extend(t) – добавление всех элементов итерабельного объекта в конец последовательности
s.insert(i, x) – вставка элемента x по индексу i
s.pop(), s.pop(i) – возврат значения по индексу i (по умолчанию – последний элемент) и удаление его из последовательности
s.remove(x) – удаление первого вхождения x
s.reverse() – разворот последовательности в обратном порядке

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какие виды строк бывают в питоне

A

Зависит от версии Питона. Во второй ветке два типа: однобайтные строки и Юникод представлены классами str и unicode соответственно. В третьем Питоне есть один вид строк str, который представляет собой Юникод. Однобайтных строк нет, вместо них есть тип bytes, то есть цепочка байт.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Можно ли изменить отдельный символ внутри строки

A

Нет, строки неизменяемы. Операции замены, форматирования и конкатенации возвращают новую строку.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Как соединить список строк в одну. Как разбить строку на список строк

A

Чтобы соединить, нужен метод строки .join(). Чтобы разбить, метод .split().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как кодировать и декодировать строки

A

Кодировать – перевести Юникод в байтовую строку. Вызвать метод .encode() у строки.

Декодировать – восстановить строку из цепочки байт. Вызвать метод .decode() у объекта str или bytes (версии Питона 2 и 3 соответственно).

В обоих случаях явно передавать кодировку, иначе будет использована та, что определена в системе по умолчанию. Быть готовым поймать исключения UnicodeEncodeError, UnicodeDecodeError.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Чем список отличается от кортежа

A

Списки – это изменяемые последовательности, обычно используемые для хранения однотипных данных (хотя Python не запрещает хранить в них данные разных типов). Представлены классом list.

Кортежи – это неизменяемые последовательности, обычно используемые, чтобы хранить разнотипные данные. Представлены классом tuple.

На уровне языка отличаются тем, что в кортеж нельзя добавить или убрать элемент. На уровне интерпретатора различий нет. Обе коллекции представлены массивом указателей на структуру PyObject.

Существуют специальные функции для работы со списками. Они вызываются методами списка. Ниже приведены наиболее часто используемые.

Создаем исходный список
lst = [1, 2, 3]

append(x): добавляет элемент в конец списка
lst.append(4)
# Теперь lst = [1, 2, 3, 4]

extend(iterable): расширяет список, добавляя элементы из итерируемого объекта
lst.extend([5, 6])
# Теперь lst = [1, 2, 3, 4, 5, 6]

insert(i, x): вставляет элемент x на позицию i
lst.insert(0, ‘start’)
# Теперь lst = [‘start’, 1, 2, 3, 4, 5, 6]

remove(x): удаляет первое вхождение элемента x
lst.remove(3)
# Теперь lst = [‘start’, 1, 2, 4, 5, 6]

pop([i]): удаляет и возвращает элемент на позиции i (по умолчанию последний)
last = lst.pop()
# last = 6, а lst = [‘start’, 1, 2, 4, 5]

sort(): сортирует список на месте
lst = [3, 1, 4, 1, 5, 9, 2]
lst.sort()
# Теперь lst = [1, 1, 2, 3, 4, 5, 9]

reverse(): разворачивает список на месте
lst.reverse()
# Теперь lst = [9, 5, 4, 3, 2, 1, 1]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое диапазон

A

Диапазоны – неизменяемые последовательности чисел, которые задаются началом, концом и шагом. Представлены классом range (в Python 2 – xrange; range в Python 2 – это функция, которая возвращает список). Параметры конструктора должны быть целыми числами (либо экземпляры класса int, либо любой объект с методом __index__) Поддерживает все общие для последовательностей операции, кроме конкатенации и повторения, а также, в версиях Python до 3.2, срезов и отрицательных индексов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как сделать список уникальным (без повторяющихся элементов)

A

Вариант со множеством. Не гарантирует порядок элементов. Порядок сохраняется только для маленьких списков.

list(set([1, 2, 2, 2, 3, 3, 1]))
»> [1, 2, 3]
Вариант с OrderedDict. Гарантирует порядок элементов.

> > > from collections import OrderedDict
list(OrderedDict.fromkeys([1, 2, 2, 2, 3, 3, 1]))
[1, 2, 3]
Вариант с циклом. Медленно, но гарантирует порядок. Подходит, если элементы нельзя помещать внутрь множества (например, словари).

res = []
for x in [1, 2, 2, 2, 3, 3, 1]:
if x not in res:
res.append(x)
»> [1, 2, 3]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Есть кортеж из трех элементов. Назначить переменным a, b, c его значения

A

a, b, c = (1, 2, 3)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Как сравниваются последовательности

A

Две последовательности равны, если они имеют одинаковый тип, равную длину и соответствующие элементы обоих последовательностей равны.

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly