2022-11-10
#python
Шпаргалка по индексам и срезам
Индексы
Индексы позволяют обратиться к элементам упорядоченных коллекций. Они представляют собой число в квадратных скобках.
'ABCD'[1]
# B
Нумерация коллекций может начинаться с начала или конца
| Нумерация | Первый элемент | Последний элемент |
|---|---|---|
| Прямая | 0 | n-1 |
| Обратная | -n | -1 |
Обращение по несуществующему индексу вызовет ошибку
'ABC'[99]
# IndexError: list index out of range
Срезы
| Срез | Пример | Результат |
|---|---|---|
| s[start:stop:step] | 'ABCDEFGHIJKLMN'[2:10:2] | CEGI |
| s[start:stop] | 'ABCDEFGHIJKLMN'[2:6] | CDEF |
| s[:stop:step] | 'ABCDEFGHIJKLMN'[:6:2] | ACE |
| s[start::step] | 'ABCDEFGHIJKLMN'[4::2] | EGIKM |
| s[start:] | 'ABCDEFGHIJKLMN'[10:] | KLMN |
| s[:stop] | 'ABCDEFGHIJKLMN'[:4] | ABCD |
| s[::step] | 'ABCDEFGHIJKLMN'[::3] | ADGJM |
| s[:] | list[:] | Копия list |
Если позиция start находится после stop или последнего элемента списка, срез вернет пустую коллекцию того же типа.
'ABC'[2:1] # ''
`ABC'[9:] # ''
Отрицательный шаг в срезе
| Пример | Результат |
|---|---|
| 'ABCDEFG'[5:2:-1] | FED |
| 'ABCDEFG'[3::-1] | DCBA |
| 'ABCDEFG'[:3:-1] | GFE |
Рецепты
[:] — создает поверхностную копию. Применяется для изменяемых коллекций (например, списков).
a = [1, 2, 3]
b = a
# a и b ссылаются на общий список
b.append([])
a
# [1, 2, 3, []]
b = a[:]
# b ссылается на копию списка
b.append(5)
a
# [1, 2, 3, []]
b[3].append(1)
# Вложенный список остался общим
a
# [1, 2, 3, [1]]
[::-1] — разворачивает коллекцию.
'ABCD'[::-1]
# DCBA
Возможно будет интересно
Новичок
Условные конструкции и сопоставление структурных шаблонов
Шпаргалка по условным конструкциям и сопоставлению структурных шаблонов
2022-11-09
2022-11-09
Продвинутый
Шпаргалка по модулю itertools
Шпаргалка по всем функциям модуля itertools, создающим разнообразные итераторы.
2022-10-28