- Последовательности в Python
- Последовательности и итерируемые объекты: разница
- Стандартные методы последовательностей
- 1) Количество элементов последовательности
- Пример
- 2) Проверка вхождения элемента в последовательность
- Пример 1
- Пример 2
- 3) Поиска индекса элемента в последовательности
- Пример 1
- Пример 2
- Пример 3
- 4) Слайсинг последовательности
- Пример 1
- Пример 2
- 5) Получение максимального и минимального значений из последовательности
- 6) Объединение (конкатенация) последовательностей
- Пример
- 7) Повторение последовательности
- Как проверить, есть ли элемент в списке
- Проверяем, есть ли элемент в списке, при помощи оператора in
- Использование цикла for для проверки наличия элемента в списке
- Как проверить, есть ли элемент в списке, при помощи функции any()
- Проверяем наличие элемента в списке при помощи метода count()
- Итоги
Последовательности в Python
Последовательность — это коллекция, элементы которого представляют собой некую последовательность.
На любой элемент последовательности можно ссылаться, используя его индекс, например, s[0] и s[1] .
Индексы последовательности начинаются с 0, а не с 1. Поэтому первый элемент — s[0] , а второй — s[1] . Если последовательность s состоит из n элементов, то последним элементом будет s[n-1] .
В Python есть встроенные типы последовательностей: списки, байтовые массивы, строки, кортежи, диапазоны и байты. Последовательности могут быть изменяемыми и неизменяемыми.
Изменяемые: списки и байтовые массивы, неизменяемые: строки, кортежи, диапазоны и байты.
Последовательность может быть однородной или неоднородной. В однородной последовательности все элементы имеют одинаковый тип. Например, строки — это однородные последовательности, поскольку каждый элемент строки — символ — один и тот же тип.
А списки — неоднородные последовательности, потому что в них можно хранить элементы различных типов, включая целые числа, строки, объекты и т.д.
Примечание. C точки зрения хранения и операций однородные типы последовательностей более эффективны, чем неоднородные.
Последовательности и итерируемые объекты: разница
Итерируемый объект (iterable) — это коллекция объектов, в которой можно получить каждый элемент по очереди. Поэтому любая последовательность является итерируемой. Например, список — итерируемый объект.
Однако итерируемый объект может не быть последовательностью. Например, множество является итерируемым объектом, но не является последовательностью.
Примечание. Итерируемые объекты — более общий тип, чем последовательности.
Стандартные методы последовательностей
Ниже описаны некоторые встроенные в Python методы последовательностей:
1) Количество элементов последовательности
Чтобы получить количество элементов последовательности, можно использовать встроенную функцию len() :
Пример
cities = ['Санкт-Петербург', 'Новосибирск', 'Москва'] print(len(cities))
2) Проверка вхождения элемента в последовательность
Чтобы проверить, находится ли элемент в последовательности, можно использовать оператор in :
элемент in последовательность
Пример 1
Проверим, есть ли ‘Новосибирск’ в последовательности cities .
cities = ['Санкт-Петербург', 'Новосибирск', 'Москва'] print('Новосибирск' in cities)
Чтобы проверить, отсутсвует ли элемент в последовательности, используется оператор not in .
Пример 2
Проверим, отсутсвует ли ‘Новосибирск’ в последовательности cities .
cities = ['Санкт-Петербург', 'Новосибирск', 'Москва'] print('Новосибирск' not in cities)
3) Поиска индекса элемента в последовательности
Чтобы узнать индекс первого вхождения определенного элемента в последовательности, используется метод index() .
последовательность.index(элемент)
Пример 1
numbers = [1, 4, 5, 3, 5, 7, 8, 5] print(numbers.index(5))
Индекс первого появления числа 5 в списке numbers — 2. Если числа в последовательности нет, Python сообщит об ошибке:
numbers = [1, 4, 5, 3, 5, 7, 8, 5] print(numbers.index(10))
Чтобы найти индекс вхождения элемента после определенного индекса, можно использовать метод index() в таком виде:
последовательность.index(элемент, индекс)
Пример 2
В следующем примере возвращается индекс первого вхождения числа 5 после третьего индекса:
numbers = [1, 4, 5, 3, 5, 7, 8, 5] print(numbers.index(5, 3))
Чтобы найти индекс вхождения элемента между двумя определенными индексами, можно использовать метод index() в такой форме:
последовательность.index(элемент, i, j)
Поиск элемента будет осуществляться между i и j .
Пример 3
numbers = [1, 4, 5, 3, 5, 7, 8, 5] print(numbers.index(5, 3, 5))
4) Слайсинг последовательности
Чтобы получить срез от индекса i до индекса j (не включая его), используйте следующий синтаксис:
Пример 1
numbers = [1, 4, 5, 3, 5, 7, 8, 5] print(numbers[2:6])
Когда вы «слайсите» последовательность, представляйте, что индексы последовательности располагаются между двумя элементами, как показано на рисунке:
Расширенный слайсинг позволяет получить срез последовательности от индекса i до j (не включая его) с шагом k :
Пример 2
numbers = [1, 4, 5, 3, 5, 7, 8, 5] print(numbers[2:6:2])
5) Получение максимального и минимального значений из последовательности
Если задан порядок между элементами в последовательности, можно использовать встроенные функции min() и max() для нахождения минимального и максимального элементов:
numbers = [1, 4, 5, 3, 5, 7, 8, 5] print(min(numbers)) # Вывод: 1 print(max(numbers)) # Вывод: 8
6) Объединение (конкатенация) последовательностей
Чтобы объединить две последовательности в одну, используется оператор + :
последовательность3 = последовательность1 + последовательность2
Пример
east = ['Владивосток', 'Якутск'] west = ['Санкт-Петербург', 'Москва'] cities = east + west print(cities)
['Владивосток', 'Якутск', 'Санкт-Петербург', 'Москва']
Неизменяемые последовательно объединять безопасно. В следующем примере мы доблавяем один элемент к списку west . И это не влияет на последовательность cities :
west.append('Благовещенск') print(west) print(cities)
['Владивосток', 'Якутск', 'Благовещенск']
['Владивосток', 'Якутск', 'Санкт-Петербург', 'Москва']
Однако когда вы работаете с изменяемыми последовательностями, стоит быть внимательными. . В следующем примере показано, как объединить список самого с собой.
city = [['Санкт-Петербург', 900_000]] cities = city + city print(cities)
Поскольку список является изменяемой последовательностью, адреса памяти первого и второго элементов из списка citites одинаковы:
print(id(cities[0]) == id(cities[1])) # Вывод: True
Кроме того, при изменении значения из исходного списка изменяется и объединенный список:
city[0][1] = 1_000_000 print(cities)
Соберем все вместе:
city = [['Санкт-Петербург', 900_000]] cities = city + city print(cities) print(id(cities[0]) == id(cities[1])) # Вывод: True city[0][1] = 1_000_000 print(cities)
[['Санкт-Петербург', 900000], ['Санкт-Петербург', 900000]] True [['Санкт-Петербург', 1000000], ['Санкт-Петербург', 1000000]]
7) Повторение последовательности
Чтобы повторить последовательность несколько раз, используется оператор умножения * .
В следующем примере строка повторяется 3 раза:
Как проверить, есть ли элемент в списке
В Python списки играют роль контейнеров, которые могут хранить любые типы данных в виде коллекции. В 32-битной системе список может содержать до 536 870 912 элементов. Поэтому иногда бывает трудно определить, есть ли определенный элемент в списке.
Проверка наличия элемента в списке является одной из основных операций со списком в Python. Не удивительно, что подобные проверки можно осуществлять разными способами. В этой статье мы рассмотрим некоторые из них.
От редакции Pythonist: если хотите побольше узнать о списках, почитайте статью «Списки в Python: полное руководство для начинающих».
Проверяем, есть ли элемент в списке, при помощи оператора in
Самый удобный способ проверить, содержит ли список определенный элемент, — это воспользоваться оператором in . Этот оператор возвращает True, если элемент есть, и False, если его нет. При этом список не сортируется.
В приведенном ниже примере показано, как применяется оператор in в условном блоке:
name_list = ["Adam", "Dean", "Harvey", "Mick", "John"] if "John" in name_list: print("'John' is found in the list") else: print("'John' is not found in the list") if 'Ned' in name_list: print("'Ned' is found in the list") else: print("'Ned' is not found in the list") # Результат: # 'John' is found in the list # 'Ned' is not found in the list
От редакции Pythonist: об операторе in , его паре not in и прочих операторах можно почитать в статье «Операторы в Python».
Использование цикла for для проверки наличия элемента в списке
Проверить, есть ли элемент в списке, можно и при помощи цикла. Этот способ также довольно прост. Цикл будет по очереди сопоставлять каждый элемент списка с искомым элементом и остановится только в случае совпадения или полного отсутствия совпадения. Пример:
name_list = ["Adam", "Dean", "Harvey", "Mick", "John"] for name in name_list: if name == 'Adam': print("Found the element") # Результат: # Found the element
Как проверить, есть ли элемент в списке, при помощи функции any()
Встроенная функция any() проверяет, оценивается ли хоть один элемент в последовательности как True.
С помощью этой функции мы можем проверить, есть ли в строке подстрока, совпадающая с каким-нибудь элементом списка.
Приведенный ниже пример показывает, как работает функция any() . Мы проверяем, содержит ли строка «Adam lives in New York» какое-нибудь из имен, хранящихся в списке из первой строки.
name_list = ["Adam", "Dean", "Harvey", "Mick", "John"] string = "Adam lives in New York" print("The original list is: " + str(name_list)) print("The original string is: " + string) result = any(item in string for item in name_list) print("Does the string contain any name from the list: " + str(result)) # Результат: # The original list is: ['Adam', 'Dean', 'Harvey', 'Mick', 'John'] # The original string is: Adam lives in New York # Does the string contain any name from the list: True
Проверяем наличие элемента в списке при помощи метода count()
Встроенный метод count() возвращает количество вхождений указанного элемента в списке. Если элемента в списке нет, то count() вернет 0. Если возвращается целое положительное число больше 0, это означает, что список содержит элемент.
name_list = ["Adam", "Dean", "Harvey", "Mick", "John"] result = name_list.count("Harvey") if result > 0: print("Harvey exists in the list") else: print("Harvey does not exist in the list") # Результат: # Harvey exists in the list
Итоги
В этой статье мы рассмотрели на примерах, как проверить, есть ли элемент в списке. Для проверок мы использовали оператор in , цикл for , методы any() и count() .