Python: Списки

Теория: Модификация

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

name = "Hexlet"
name.upper()  # 'HEXLET'
# Значение name не поменялось
print(name)  # 'Hexlet'

Со списками это правило не работает. Списки могут меняться: увеличиваться, уменьшаться, изменять значения по индексам. Ниже мы разберем все эти операции.

Изменение элементов списка

Синтаксис изменения элемента списка практически такой же, как и при обращении к элементу списка. Разница лишь в наличии присваивания:

animals = ["cats", "dogs", "birds"]
# Меняется первый элемент списка
animals[0] = "horses"
print(animals)  # => [ 'horses', 'dogs', 'birds' ]

Добавление элемента в список

Метод append() добавляет элемент в конец списка:

animals = ["cats", "dogs", "birds"]
animals.append("horses")

# Список animals изменен — стал больше
print(animals)  # => [ 'cats', 'dogs', 'birds', 'horses' ]

# Строка 'horses' была добавлена в конец списка (индекс = 3)
print(animals[3])  # => 'horses'

Метод insert() добавляет элемент перед указанным по индексу элементом списка:

animals = ["cats", "dogs", "birds"]
# Добавит элемент перед 2 индексом, то есть между 'dogs' и 'birds'
animals.insert(2, "horses")
print(animals)  # => ['cats', 'dogs', 'horses', 'birds']

Метод extend() расширяет список всеми элементами из переданного списка:

animals = ["cats", "dogs"]
birds = ["heron", "sparrow", "swift"]

animals.extend(birds)
print(animals)  # => ['cats', 'dogs', 'heron', 'sparrow', 'swift']

Новички часто совершают такую ошибку:

l = [1]
l = l.append(2)
print(l)  # None
# A где список?

Нужно помнить, что определенные методы изменяют сам список, но возвращают None. Это избавит от потенциальных ошибок и удивления.

Удаление элемента из списка

Удалить элемент из списка можно с помощью оператора del.

animals = ["cats", "dogs", "birds"]
# удаляем элемент под индексом 1
del animals[1]
print(animals)  # => ['cats', 'birds']

В общем случае уменьшение размера списка — нежелательная операция. Особенно сильно она может подвести при обходе списка в цикле. Подробнее об этом поговорим в одном из следующих уроков.

Рекомендуемые программы