В Python 3 есть ряд встроенных структур данных, включая списки. Структуры данных позволяют систематизировать, хранить и извлекать данные, а также управлять ими.
Примечание: Для выполнения руководства нужно знать основы Python 3, типы данных и в частности особенности списков в Python. Больше информации можно найти в руководстве Работа со списками в Python 3.
В данном руководстве речь пойдёт о встроенных методах списков: удалении элементов из списка, расширении, разворачивании, сортировке и многом другом.
При работе со списками важно помнить, что это изменяемый тип данных (в отличие от строк). Метод изменяет оригинальный список, а не его копию.
Для примера представим, что у вас есть аквариум, в котором постоянно меняется набор рыб
Метод list.append()
Метод list.append(x) вставляет элемент (x) в конец списка. Предположим, у нас есть такой список рыб в аквариуме:
fish = ['barracuda','cod','devil ray','eel']
Данный список представлен 4 элементами. Диапазон индексов списка: от 0 (‘barracuda’) до 3 (‘eel’).
Допустим, в аквариуме появилась новая рыба (например, ‘flounder’), её нужно добавить в список. Используйте метод list.append(x), где list – название списка, а х – новый элемент. fish.append(‘flounder’)
print(fish)
['barracuda', 'cod', 'devil ray', 'eel', 'flounder']
Итак, теперь в списке 5 элементов. Новый элемент добавлен в конец списка.
Метод list.insert()
Аргументы метода list.insert(i,x):
- i – индекс, который нужно присвоить новому элементу.
- x – новый элемент, который нужно вставить в список.
В аквариуме появилась ещё одна рыба (например, anchovy). Обратите внимание: на данный момент элементы списка fish указаны в алфавитном порядке. Потому элемент ‘anchovy’ нужно добавить не в конец, а в начало списка. Предыдущий метод не подходит – он добавляет элементы только в конец списка. Используйте метод list.insert():
fish.insert(0,'anchovy')
print(fish)
['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder']
Теперь индексы всех элементов обновятся (‘anchovy’ – 0, ‘barracuda’ – 1, ‘flounder’ – 5).
Попробуйте добавить в список ещё один элемент, damselfish. Соблюдая алфавитный порядок, добавить элемент нужно под индексом 3.
fish.insert(3,'damselfish')
Метод list.extend()
Чтобы объединить два списка, используйте метод list.extend(L), где L – второй список, элементы которого нужно добавить в конец первого.
Предположим, вы решили объединить два аквариума, в результате чего в аквариуме появляется 4 новые рыбы. Все они указаны в списке more_fish.
more_fish = ['goby','herring','ide','kissing gourami']
Теперь нужно добавить элементы списка more_fish в список fish.
fish.extend(more_fish)
print(fish)
['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide', 'kissing gourami']
Итак, список fish состоит из 10 элементов.
Метод list.remove()
Метод list.remove(х) позволяет удалить из списка определённый компонент.
К примеру, вы подарили одну рыбку (kissing gourami). Этот элемент нужно удалить из списка:
fish.remove('kissing gourami')
print(fish)
['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide']
Если в методе list.remove() вы укажете несуществующий элемент, вы получите сообщение об ошибке:
ValueError: list.remove(x): x not in list
Обратите внимание: метод list.remove() удаляет только первый совпавший элемент. То есть если в списке находятся два элемента kissing gourami, то метод fish.remove(‘kissing gourami’) удалит только один такой элемент, а второй останется в списке.
Метод list.pop()
Метод list.pop([i]) удаляет из списка элемент с индексом i и выводит его. Квадратные скобки указывают на то, что этот параметр опционален. Индекс можно не указывать. В таком случае метод удалит и выведет последний элемент списка.
К примеру, вы решили продать одну рыбу (devil ray) владельцу большого аквариума. Чтобы удалить её из списка, укажите индекс в методе .pop(). Метод выведет элемент с указанным индексом, и вы сможете убедиться, что удаляете правильный элемент.
print(fish.pop(3))
print(fish)
devil ray
['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']
Если вы не укажете индекс элемента, метод удалит последний элемент (‘ide’).
Индекс list.index()
Когда списки становятся объемными, становится сложно индексировать их самостоятельно. Метод list.index(x) возвращает элемента со значением х. Если в списке несколько элементов со значением х, метод возвращает индекс первого найденного в списке элемента с таким значением.
print(fish)
print(fish.index('herring'))
['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']
6
Зная индексы элементов списка, вы можете управлять списками.
Если в методе .index() вы укажете несуществующий элемент, вы получите сообщение об ошибке:
ValueError: 'x' is not in list.
Метод list.copy()
Чтобы создать копию списка, используйте метод list.copy().
Передайте вывод fish.copy() в переменную fish_2, а затем отобразите её содержимое:
fish_2 = fish.copy()
print(fish_2)
['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']
Теперь у вас есть точная копия списка fish – список fish_2.
Метод list.reverse()
С помощью метода list.reverse() можно развернуть порядок элементов в списке. К примеру, это полезно, если вам удобнее использовать обратный алфавитный порядок вместо традиционного. Попробуйте развернуть список fish:
fish.reverse()
print(fish)
['ide', 'herring', 'goby', 'flounder', 'eel', 'cod', 'barracuda', 'anchovy']
Метод list.count()
Метод list.count(x) считает, сколько раз в списке повторяется тот или иной элемент. Это полезно, если в длинном списке есть много повторяющихся элементов, и их нужно посчитать.
Например:
print(fish.count('goby'))
1
Строка ‘goby’ появляется в списке всего один раз.
Попробуйте применить этот метод к списку чисел. Предположим, вы знаете возраст каждой рыбы в аквариуме, и для этого у вас есть отдельный список, fish_ages.
Попробуйте узнать, сколько в аквариуме рыб возрастом в 1 год.
fish_ages = [1,2,4,3,2,1,1,2]
print(fish_ages.count(1))
3
Число 1 встречается в списке три раза.
Метод list.sort()
Метод list.sort() позволяет сортировать элементы в списке.
Как и list.count(), list.sort() помогает узнать, сколько раз в списке встречается определённый элемент. Кроме того, он упорядочивает остальные элементы списка.
Попробуйте применить метод .sort() к списку fish_ages.
fish_ages.sort()
print(fish_ages)
[1, 1, 1, 2, 2, 2, 3, 4]
Данный метод выводит числа в упорядоченном виде. Но поскольку каждое число отображает возраст конкретной рыбы, лучше создать копию оригинального списка, прежде чем упорядочивать его элементы.
Метод list.clear()
Если список стал ненужным, его значения можно удалить с помощью метода list.clear().
К примеру, вы раздарили всех рыб из аквариума. Теперь можно очистить список:
fish.clear()
print(fish)
[]
Квадратные скобки в выводе сообщают о том, что теперь список пуст.
Заключение
Список – изменяемая упорядоченная последовательность элементов. Это очень гибкий тип данных.
Читайте также: