Примитивные типы данных, с которыми мы работали до сих пор, невозможно изменять. Любые функции и методы над ними возвращают новые значения, но не могут ничего сделать со старым.
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']
В общем случае уменьшение размера списка — нежелательная операция. Особенно сильно она может подвести при обходе списка в цикле. Подробнее об этом поговорим в одном из следующих уроков.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.