Как использовать методы списка в Python 3

Вступление

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

Чтобы получить максимальную отдачу от этого учебного пособия, вы должны быть немного знакомы с типом данных списка, его синтаксисом и тем, как он индексируется. Вы можете просмотреть списки, прочитав руководствоUnderstanding Lists in Python 3.

Здесь мы рассмотрим встроенные методы, которые вы можете использовать для работы со списками. Мы будем добавлять и удалять элементы из списков, расширять списки, реверсировать и сортировать списки и многое другое.

Важно помнить, что списки являются изменяемыми или изменяемыми типами данных. В отличие отstrings, которые являются неизменяемыми, всякий раз, когда вы используете метод в списке, вы будете влиять на сам список, а не на его копию.

В этом уроке мы будем работать, прежде всего, со списком, состоящим из инвентаря различных рыб, которые нам нужно изменить по мере добавления или удаления рыб из городского аквариума.

list.append()

Методlist.append(x) добавит элемент (x) в конец списка. Начнем со списка наших рыб, которые разбросаны по всему аквариуму.

fish = ['barracuda','cod','devil ray','eel']

Этот список состоит из 4 строковых элементов, и их порядковые номера варьируются от'barracuda' при 0 до'eel' при индексе 3.

Мы только что получили новую рыбу в аквариум сегодня, и мы хотели бы добавить эту рыбу в наш список. Мы передадим строку нашего нового типа рыбы'flounder' в методlist.append(), а затем распечатаем наш измененный список, чтобы подтвердить, что элемент был добавлен.

fish.append('flounder')
print(fish)
Output['barracuda', 'cod', 'devil ray', 'eel', 'flounder']

Теперь у нас есть список из 5 строковых элементов, который заканчивается элементом, который мы передали функции.append().

list.insert()

Методlist.insert(i,x) принимает два аргумента, гдеi - это позиция индекса, в которую вы хотите добавить элемент, аx - это сам элемент.

Наш аквариум приобрел еще одну новую рыбу, анчоус. Вы могли заметить, что пока списокfish находится в алфавитном порядке. Из-за этого мы не хотим просто добавлять строку'anchovy' в конецfish с помощью функцииlist.append(). Вместо этого мы будем использоватьlist.insert(), чтобы добавить'anchovy' в начало этого списка в позиции индекса0:

fish.insert(0,'anchovy')
print(fish)
Output['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder']

В этом случае мы добавили строковый элемент в начало списка. Каждый из последовательных элементов теперь будет иметь новый порядковый номер, поскольку все они были перемещены вниз. Следовательно,'barracuda' будет в индексе 1,'cod' будет в индексе 2, а'flounder' - последний элемент - будет в индексе 5.

Если в этот момент мы приносим в аквариум стрекозу и хотим сохранить алфавитный порядок на основе приведенного выше списка, мы бы поместили элемент в индекс3:fish.insert(3,'damselfish').

list.extend()

Если мы хотим объединить более одного списка, мы можем использовать методlist.extend(L), который принимает второй список в качестве аргумента.

Наш аквариум встречает четырех новых рыб из другого аквариума, который закрывается. У нас есть эти рыбы вместе в спискеmore_fish:

more_fish = ['goby','herring','ide','kissing gourami']

Теперь мы добавим элементы из спискаmore_fish в списокfish и распечатаем список, чтобы убедиться, что второй список был включен:

fish.extend(more_fish)
print(fish)
Output['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide', 'kissing gourami']

На данный момент списокfish состоит из 10 элементов.

list.remove()

Когда нам нужно удалить элемент из списка, мы будем использовать методlist.remove(x), который удаляет первый элемент в списке, значение которого эквивалентноx.

Группа местных исследователей приехала в аквариум. Они проводят исследования по целованию видов рыб гурами. Они попросили нас одолжить им наших целующихся гурами, поэтому мы хотели бы удалить элемент'kissing gourami' из списка, чтобы отразить это изменение:

fish.remove('kissing gourami')
print(fish)
Output['anchovy', 'barracuda', 'cod', 'devil ray', 'eel', 'flounder', 'goby', 'herring', 'ide']

После использования методаlist.remove() в нашем списке больше нет элемента'kissing gourami'.

Если вы передадите элемент дляx вlist.remove(), которого нет в списке, вы получите следующую ошибку:

OutputValueError: list.remove(x): x not in list

Имейте в виду, чтоlist.remove() удалит только первый экземпляр предмета, который вы ему передали, поэтому, если бы у нас было два целующихся гурами в нашем аквариуме и мы одолжили ученым только одного, мы могли бы использовать ту же конструкциюfish.remove('kissing gourami'), и у нас все еще есть второй целующийся гурами в нашем списке.

list.pop()

Мы можем использовать методlist.pop([i]), чтобы вернуть элемент в заданной позиции индекса из списка, а затем удалить этот элемент. Квадратные скобки вокругi для индекса говорят нам, что этот параметр является необязательным, поэтому, если мы не укажем индекс (как вfish.pop()), последний элемент будет возвращен и удален.

Наш дьявольский луч стал слишком большим для нашего аквариума, и, к счастью, аквариум в нескольких городах может удовлетворить потребности луча. Мы будем использовать.pop() и укажем номер индекса (3) строкового элемента'devil ray', чтобы удалить элемент из нашего списка, и, вернув его, мы подтвердим, что удаляем правильный предмет.

print(fish.pop(3))
print(fish)
Outputdevil ray
['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']

Используя метод.pop(), мы смогли вернуть и удалить'devil ray' из спискаfish.

Если бы мы не передавали этому методу параметры и выполнялиfish.pop(), последний элемент'ide' был бы возвращен, а затем удален из списка.

list.index()

Когда списки начинают увеличиваться в длине, нам становится сложнее подсчитать наши позиции, чтобы определить, в какой позиции индекса находится определенное значение. Мы можем использоватьlist.index(x), гдеx эквивалентно значению элемента, чтобы вернуть индекс в списке, где находится этот элемент. Если имеется более одного элемента со значениемx, этот метод вернет первую позицию индекса.

print(fish)
print(fish.index('herring'))
Output['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']
6

Хотя списокfish не очень длинный, мы все же можем определить позицию индекса элемента'herring' без подсчета. Очень важно знать индекс каждого элемента, чтобы мы могли эффективно управлять списками.

Мы получим ошибку, если мы укажем значение с помощью.index(), а такого значения не существует в данном списке:ValueError: 'x' is not in list.

list.copy()

Когда мы работаем со списком и, возможно, захотим манипулировать им несколькими способами, сохраняя доступный нам исходный список без изменений, мы можем использоватьlist.copy() для создания копии списка.

Мы передадим значение, возвращаемое изfish.copy(), в переменнуюfish_2, а затем распечатаем значениеfish_2, чтобы убедиться, что это список с теми же элементами, что иfishс.

fish_2 = fish.copy()
print(fish_2)
Output['anchovy', 'barracuda', 'cod', 'eel', 'flounder', 'goby', 'herring', 'ide']

На данный момент иfish, иfish_2 являются эквивалентными списками.

list.reverse()

Мы можем изменить порядок элементов в списке с помощью методаlist.reverse(). Возможно, нам удобнее использовать обратный алфавитный порядок, а не традиционный алфавитный порядок. В этом случае нам нужно использовать метод.reverse() со спискомfish, чтобы список был перевернут на место.

fish.reverse()
print(fish)
Output['ide', 'herring', 'goby', 'flounder', 'eel', 'cod', 'barracuda', 'anchovy']

После использования метода.reverse() наш список начинается с элемента'ide', который был в конце нашего списка, и заканчивается'anchovy', который был в начале списка.

list.count()

Методlist.count(x) вернет, сколько раз значениеx встречается в указанном списке. Мы можем захотеть использовать этот метод, когда у нас длинный список с множеством совпадающих значений. Если бы у нас был, например, аквариум побольше, и у нас был предмет для каждой неоновой тетры, которая у нас была, мы могли бы использовать.count(), чтобы определить общее количество неоновых тетр, которые у нас есть в любой момент времени.

Мы будем использовать наш текущий список, чтобы подсчитать, сколько раз появляется элемент'goby':

print(fish.count('goby'))
Output1

Поскольку строка'goby' появляется только один раз, при использовании метода.count() возвращается число 1.

Давайте также использовать этот метод с целочисленным списком. Наш аквариум стремится обеспечить большую заботу о каждой рыбе, поэтому мы отслеживаем, сколько лет каждой из наших рыб, чтобы мы могли обеспечить, чтобы их рационы соответствовали потребностям рыб в зависимости от их возраста. Этот второй списокfish_ages соответствует типу рыбы из нашего другого спискаfish.

Поскольку годовалая рыба имеет особые диетические потребности, мы собираемся подсчитать, сколько годичной рыбы у нас есть:

fish_ages = [1,2,4,3,2,1,1,2]
print(fish_ages.count(1))
Output3

Целое число1 встречается в спискеfish_ages 3 раза, поэтому, когда мы используем метод.count(), возвращается число 3.

list.sort()

Мы можем использовать методlist.sort() для сортировки элементов в списке.

Так же, какlist.count(),list.sort() может сделать более очевидным, сколько из определенных целых значений у нас есть, а также может поместить несортированный список чисел в числовой порядок.

Давайте воспользуемся целочисленным спискомfish_ages, чтобы увидеть метод.sort() в действии:

fish_ages.sort()
print(fish_ages)
Output[1, 1, 1, 2, 2, 2, 3, 4]

При использовании.sort() сfish_ages целочисленные значения возвращаются по порядку. На практике, поскольку эти возрасты соответствуют конкретной рыбе, вы, вероятно, захотите сделать копию оригинального списка до сортировки.

list.clear()

Когда мы закончили со списком, мы можем удалить все содержащиеся в нем значения с помощью методаlist.clear().

Местное правительство решило захватить наш аквариум, сделав его общественным пространством для жителей нашего города. Поскольку мы сами больше не занимаемся аквариумом, нам больше не нужно вести учет рыб, поэтому давайте очистим списокfish:

fish.clear()
print(fish)
Output[]

Мы получаем квадратные скобки в качестве вывода после использования функции.clear() дляfish, сообщая нам, что список теперь свободен от всех элементов.

Заключение

Будучи изменяемой или изменяемой упорядоченной последовательностью элементов, списки являются очень гибкими структурами данных в Python. Методы списков позволяют нам работать со списками сложным образом. Мы можем комбинировать методы сother ways to modify lists, чтобы иметь полный набор инструментов для эффективного использования списков в наших программах. Отсюда вы можете прочитать оlist comprehensions для создания списков на основе существующих списков.