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