Python найти элемент последовательности

Последовательности в 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 .

Читайте также:  Java read socket input

Пример 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) Повторение последовательности

Чтобы повторить последовательность несколько раз, используется оператор умножения * .

Читайте также:  Php версия операционной системы

В следующем примере строка повторяется 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.

Читайте также:  Java read socket input

С помощью этой функции мы можем проверить, есть ли в строке подстрока, совпадающая с каким-нибудь элементом списка.

Приведенный ниже пример показывает, как работает функция 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() .

Источник

Оцените статью