Время чтения 3 мин.
Существует несколько способов проверки наличия элемента в списке в Python:
- Использование метода index() для поиска индекса элемента в списке.
- Использование оператора in для проверки наличия элемента в списке.
- Использование метода count() для подсчета количества вхождений элемента.
- Использование функции any().
- Функция filter() создает новый список элементов на основе условий.
- Применение цикла for.
Содержание
- Способ 1: Использование метода index()
- Способ 2: Использование «оператора in»
- Способ 3: Использование функции count()
- Синтаксис
- Пример
- Способ 4: использование понимания списка с any()
- Способ 5: Использование метода filter()
- Способ 6: Использование цикла for
Способ 1: Использование метода index()
Чтобы найти элемент в списке Python, вы можете использовать метод list index(). Список index() — это встроенный метод, который ищет элемент в списке и возвращает его индекс.
Если один и тот же элемент присутствует более одного раза, метод возвращает индекс первого вхождения элемента.
Индекс в Python начинается с 0, а не с 1. Таким образом, через индекс мы можем найти позицию элемента в списке.
streaming = [‘netflix’, ‘hulu’, ‘disney+’, ‘appletv+’] index = streaming.index(‘disney+’) print(‘The index of disney+ is:’, index) |
Выход
The index of disney+ is: 2 |
Метод list.index() принимает единственный аргумент, элемент, и возвращает его позицию в списке.
Способ 2: Использование «оператора in»
Используйте оператор in, чтобы проверить, есть ли элемент в списке.
main_list = [11, 21, 19, 46] if 19 in main_list: print(“Element is in the list”) else: print(“Element is not in the list”) |
Выход
Вы можете видеть, что элемент «19» находится в списке. Вот почему оператор in возвращает True.
Если вы проверите элемент «50», то оператор in вернет False и выполнит оператор else.
Способ 3: Использование функции count()
Метод list.count() возвращает количество вхождений данного элемента в списке.
Синтаксис
Метод count() принимает единственный элемент аргумента: элемент, который будет подсчитан.
Пример
main_list = [11, 21, 19, 46] count = main_list.count(21) if count > 0: print(“Element is in the list”) else: print(“Element is not in the list”) |
Выход
Мы подсчитываем элемент «21», используя список в этой функции example.count(), и если он больше 0, это означает, что элемент существует; в противном случае это не так.
Способ 4: использование понимания списка с any()
Any() — это встроенная функция Python, которая возвращает True, если какой-либо элемент в итерируемом объекте имеет значение True. В противном случае возвращается False.
main_list = [11, 21, 19, 46] output = any(item in main_list for item in main_list if item == 22) print(str(bool(output))) |
Выход
Вы можете видеть, что в списке нет «22». Таким образом, нахождение «22» в списке вернет False функцией any(). Если функция any() возвращает True, элемент в списке существует.
Способ 5: Использование метода filter()
Метод filter() перебирает элементы списка, применяя функцию к каждому из них.
Функция filter() возвращает итератор, который перебирает элементы, когда функция возвращает значение True.
main_list = [11, 21, 19, 46] filtered = filter(lambda element: element == 19, main_list) print(list(filtered)) |
Выход
В этом примере мы используем функцию filter(), которая принимает функцию и перечисляет ее в качестве аргумента.
Мы использовали лямбда-функцию, чтобы проверить, совпадает ли входной элемент с любым элементом из списка, и если это так, он вернет итератор. Чтобы преобразовать итератор в список в Python, используйте функцию list().
Мы использовали функцию list() для преобразования итератора, возвращаемого функцией filter(), в список.
Способ 6: Использование цикла for
Вы можете узнать, находится ли элемент в списке, используя цикл for в Python.
main_list = [11, 21, 19, 46] for i in main_list: if(i == 46): print(“Element Exists”) |
Выход
В этом примере мы прошли список элемент за элементом, используя цикл for, и если элемент списка совпадает с входным элементом, он напечатает «Element exists».
На чтение 4 мин Просмотров 4.6к. Опубликовано 03.03.2023
Содержание
- Введение
- Поиск методом count
- Поиск при помощи цикла for
- Поиск с использованием оператора in
- В одну строку
- Поиск с помощью лямбда функции
- Поиск с помощью функции any()
- Заключение
Введение
В ходе статьи рассмотрим 5 способов поиска элемента в списке Python.
Поиск методом count
Метод count() возвращает вхождение указанного элемента в последовательность. Создадим список разных цветов, чтобы в нём производить поиск:
colors = ['black', 'yellow', 'grey', 'brown']
Зададим условие, что если в списке colors присутствует элемент ‘yellow’, то в консоль будет выведено сообщение, что элемент присутствует. Если же условие не сработало, то сработает else, и будет выведена надпись, что элемента отсутствует в списке:
colors = ['black', 'yellow', 'grey', 'brown']
if colors.count('yellow'):
print('Элемент присутствует в списке!')
else:
print('Элемент отсутствует в списке!')
# Вывод: Элемент присутствует в списке!
Поиск при помощи цикла for
Создадим цикл, в котором будем перебирать элементы из списка colors. Внутри цикла зададим условие, что если во время итерации color приняла значение ‘yellow’, то элемент присутствует:
colors = ['black', 'yellow', 'grey', 'brown']
for color in colors:
if color == 'yellow':
print('Элемент присутствует в списке!')
# Вывод: Элемент присутствует в списке!
Поиск с использованием оператора in
Оператор in предназначен для проверки наличия элемента в последовательности, и возвращает либо True, либо False.
Зададим условие, в котором если ‘yellow’ присутствует в списке, то выводится соответствующее сообщение:
colors = ['black', 'yellow', 'grey', 'brown']
if 'yellow' in colors:
print('Элемент присутствует в списке!')
else:
print('Элемент отсутствует в списке!')
# Вывод: Элемент присутствует в списке!
В одну строку
Также можно найти элемент в списке при помощи оператора in всего в одну строку:
colors = ['black', 'yellow', 'grey', 'brown']
print('Элемент присутствует в списке!') if 'yellow' in colors else print('Элемент отсутствует в списке!')
# Вывод: Элемент присутствует в списке!
Или можно ещё вот так:
colors = ['black', 'yellow', 'grey', 'brown']
if 'yellow' in colors: print('Элемент присутствует в списке!')
# Вывод: Элемент присутствует в списке!
Поиск с помощью лямбда функции
В переменную filtering будет сохранён итоговый результат. Обернём результат в список (list()), т.к. метода filter() возвращает объект filter. Отфильтруем все элементы списка, и оставим только искомый, если он конечно присутствует:
colors = ['black', 'yellow', 'grey', 'brown']
filtering = list(filter(lambda x: 'yellow' in x, colors))
Итак, если искомый элемент находился в списке, то он сохранился в переменную filtering. Создадим условие, что если переменная filtering не пустая, то выведем сообщение о присутствии элемента в списке. Иначе – отсутствии:
colors = ['black', 'yellow', 'grey', 'brown']
filtering = list(filter(lambda x: 'yellow' in x, colors))
if filtering:
print('Элемент присутствует в списке!')
else:
print('Элемент отсутствует в списке!')
# Вывод: Элемент присутствует в списке!
Поиск с помощью функции any()
Функция any принимает в качестве аргумента итерабельный объект, и возвращает True, если хотя бы один элемент равен True, иначе будет возвращено False.
Создадим условие, что если функция any() вернёт True, то элемент присутствует:
colors = ['black', 'yellow', 'grey', 'brown']
if any(color in 'yellow' for color in colors):
print('Элемент присутствует в списке!')
else:
print('Элемент отсутствует в списке!')
# Вывод: Элемент присутствует в списке!
Внутри функции any() при помощи цикла производится проверка присутствия элемента в списке.
Заключение
В ходе статьи мы с Вами разобрали целых 5 способов поиска элемента в списке Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂
Как создать список?
Списки объявляются в квадратных скобках [ ]
.
z = [3, 7, 4, 2] # Создание списка
В python списки хранят упорядоченный набор элементов, которые могут быть разных типов. В примере, указанном выше элементы имеют один и тот же тип int
. Не обязательно все элементы должны быть одного типа.
# Создание списка с разными типам данных
heterogenousElements = [3, True, 'Витя', 2.0]
Этот список содержит int
, bool
, string
и float
.
Доступ к элементам списка
Каждый элемент имеет присвоенный ему индекс. Важно отметить, в python индекс первого элемента в списке — 0.
z = [3, 7, 4, 2] # создаем список
# обращение к первому элементу списка с индексом 0
print(z[0])
# элемент с индексом 0 -> 3
Также поддерживается отрицательная индексация. Отрицательная индексация начинается с конца. Иногда её удобнее использовать для получения последнего элемента в списке, потому что не нужно знать длину списка, чтобы получить доступ к последнему элементу.
# выведите последний элемент списка
>>> print(z[-1])
2
Вы также можете получить доступ к одному и тому же элементу с использованием положительных индексов (как показано ниже). Альтернативный способ доступа к последнему элементу в списке z
.
Срезы(slice) списка
Срезы хороши для получения подмножества значений с вашего списка. На примере кода, приведенного ниже, он вернет список с элементами из индекса 0 и не включая индекс 2.
# Создайте список
z = [3, 7, 4, 2]
# Вывод элементов с индексом от 0 до 2 (не включая 2)
print(z[0:2])
# вывод: [3, 7]
# Все, кроме индекса 3
>>> print(z[:3])
[3, 7, 4]
Код, указанный ниже возвращает список с элементами начиная с индекса 1 до конца.
# начиная с индекса 1 до конца списка
>>> print(z[1:])
[7, 4, 2]
Изменение элементов в списке
Списки в Python изменяемы. Это означает, что после создания списка можно обновить его отдельные элементы.
z = [3, 7, 4, 2] # Создание списка
# Изменяем элемент с индексом 1 на строку 'fish'
z[1] = 'fish'
print(z)
[3, 'fish', 4, 2]
У списков Python есть разные методы, которые помогают в программировании. В этом разделе рассматриваются все методы списков.
Метод Index
Метод index
возвращает положение первого индекса, со значением х
. В указанном ниже коде, он возвращает назад 0.
# Создайте список
>>> z = [4, 1, 5, 4, 10, 4]
>>> print(z.index(4))
0
Вы также можете указать, откуда начинаете поиск.
>>> print(z.index(4, 3))
3
Метод Count
Метод count
работает так, как звучит. Он считает количество раз, когда значение появляется в списке.
>>> random_list = [4, 1, 5, 4, 10, 4]
>>> print(random_list.count(4))
3
Метод Sort
Метод sort
сортирует и меняет исходный список.
z = [3, 7, 4, 2]
z.sort()
print(z)
[2, 3, 4, 7]
Вышеуказанный код сортирует список чисел от наименьшего к наибольшему. Код, указанный ниже, показывает, как вы можете сортировать список от наибольшего к наименьшему.
# Сортировка и изменение исходного списка от наивысшего к наименьшему
z.sort(reverse = True)
print(z)
[7, 4, 3, 2]
Следует отметить, что вы также можете отсортировать список строк от А до Я (или A-Z) и наоборот.
# Сортировка списка строками
names = ["Стив", "Рейчел", "Майкл", "Адам", "Джессика", "Лестер"]
names.sort()
print(names)
['Адам', 'Джессика', 'Лестер', 'Майкл', 'Рейчел', 'Стив']
Метод Append
Метод append
добавляет элемент в конец списка. Это происходит на месте.
z = [7, 4, 3, 2]
z.append(3)
print(z)
[7, 4, 3, 2, 3]
Метод Remove
z = [7, 4, 3, 2, 3]
z.remove(2)
print(z)
Код удаляет первое вхождение значения 2 из списка z.
[7, 4, 3, 3]
Метод Pop
Метод pop
удаляет элемент в указанном индексе. Этот метод также вернет элемент, который был удален из списка. В случае, если вы не указали индекс, он по умолчанию удалит элемент по последнему индексу.
z = [7, 4, 3, 3]
print(z.pop(1))
print(z)
4
[7, 3, 3]
Метод Extend
Метод extend
расширяет список, добавляя элементы. Преимущество над append
в том, что вы можете добавлять списки.
Добавим [4, 5]
в конец z
:
z = [7, 3, 3]
z.extend([4,5])
print(z)
[7, 3, 3, 4, 5]
То же самое можно было бы сделать, используя +
.
>>> print([1,2] + [3,4])
[7, 3, 3, 4, 5]
Метод Insert
Метод insert
вставляет элемент перед указанным индексом.
z = [7, 3, 3, 4, 5]
z.insert(4, [1, 2])
print(z)
[7, 3, 3, 4, [1, 2], 5]
Простые операции над списками
Метод | Описаниее |
---|---|
x in s |
True если элемент x находится в списке s |
x not in s |
True если элемент x не находится в списке s |
s1 + s2 |
Объединение списков s1 и s2 |
s * n , n * s |
Копирует список s n раз |
len(s) |
Длина списка s , т.e. количество элементов в s |
min(s) |
Наименьший элемент списка s |
max(s) |
Наибольший элемент списка s |
sum(s) |
Сумма чисел списка s |
for i in list() |
Перебирает элементы слева направо в цикле for |
Примеры использование функций со списками:
>>> list1 = [2, 3, 4, 1, 32]
>>> 2 in list1 # 2 в list1?
True
>>> 33 not in list1 # 33 не в list1?
True
>>> len(list1) # количество элементов списка
5
>>> max(list1) # самый большой элемент списка
32
>>> min(list1) # наименьший элемент списка
1
>>> sum(list1) # сумма чисел в списке
42
# генератор списков python (list comprehension)
>>> x = [i for i in range(10)]
>>> print(x)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(list1.reverse()) # разворачивает список
[32, 1, 4, 3, 2]
Операторы +
и *
для списков
+
объединяет два списка.
list1 = [11, 33]
list2 = [1, 9]
list3 = list1 + list2
print(list3)
[11, 33, 1, 9]
*
копирует элементы в списке.
list4 = [1, 2, 3, 4]
list5 = list4 * 3
print(list5)
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
Оператор in
и not in
Оператор in
проверяет находится ли элемент в списке. При успешном результате он возвращает True
, в случае неудачи, возвращает False
.
>>> list1 = [11, 22, 44, 16, 77, 98]
>>> 22 in list1
True
Аналогично not in
возвращает противоположный от оператора in
результат.
>>> 22 not in list1
False
Итерация по списку с использованием цикла for
Список — последовательность. Ниже способ, которые вы можете использовать для цикла, чтобы перебрать все элементы списка.
list1 = [1,2,3,4,5]
for i in list1:
print(i, end=" ")
1 2 3 4 5
Преобразование списка в строку
Как преобразовать список в строку?
Для преобразования списка в строку используйте метод join(). В Python это выглядит так: ",".join(["a", "b", "c"]) -> "a,b,c"
.
Разделитель пишут в кавычках перед join, в список должен состоять из строк.
Вот несколько полезных советов для преобразования списка в строку (или любого другого итерабельного, такого как tuple
).
Во-первых, если это список строк, вы можете просто использовать join() следующим образом.
mylist = ['spam', 'ham', 'eggs']
print(', '.join(mylist))
spam, ham, eggs
Используя тот же метод, вы можете также сделать следующее:
>>> print('n'.join(mylist))
spam
ham
eggs
Однако этот простой метод не работает, если список содержит не строчные объекты, такие как целые числа. Если вы просто хотите получить строку с разделителями-запятыми, вы можете использовать этот шаблон:
list_of_ints = [80, 443, 8080, 8081]
print(str(list_of_ints).strip('[]'))
80, 443, 8080, 8081
Или же этот, если ваши объекты содержат квадратные скобки:
>>> print(str(list_of_ints)[1:-1])
80, 443, 8080, 8081
В конце концов, вы можете использовать map()
чтобы преобразовать каждый элемент в список строки и затем присоединиться к ним:
>>> print(', '.join(map(str, list_of_ints)))
80, 443, 8080, 8081
>>> print('n'.join(map(str, list_of_ints)))
80
443
8080
8081
Тест на знание списков в Python
Что выведет этот код:
a = [ 1, 342, 223, 'Африка', 'Очки']
print(a[-3])
Что выведет этот код:
sample = [10, 20, 30]
sample.append(60)
sample.insert(3, 40)
print(sample)
Что выведет этот код:
lake = ["Python", 51, False, "22"]
lake.reverse()
lake.reverse()
print(lake[-2])
Что из перечисленного правда?
Мы можем вставить элемент на любую позицию в списке
Все элементы списка должны быть одного типа
Элементы списка не могут повторятся
Список не может содержать вложенных списков
Как получить ['bar', 'baz']
из списка
a = ['foo', 'bar', 'baz', 'qux', 'quux']
?
Как получить 'bar'
из списка
x = [10, [3.141, 20, [30, 'baz', 2.718]], 'foo']
?
Как избавиться от “3” в списке a = [1, 3, 5]
и получить [1, 5]
?
С помощью какого метода можно добавить сразу два элемента в список?
Что вернет этот код [1, 2] * 3
?
What is a good way to find the index of an element in a list in Python?
Note that the list may not be sorted.
Is there a way to specify what comparison operator to use?
asked Mar 3, 2009 at 1:45
2
From Dive Into Python:
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> li.index("example")
5
stivlo
83.1k31 gold badges142 silver badges199 bronze badges
answered Mar 3, 2009 at 1:52
3
If you just want to find out if an element is contained in the list or not:
>>> li
['a', 'b', 'new', 'mpilgrim', 'z', 'example', 'new', 'two', 'elements']
>>> 'example' in li
True
>>> 'damn' in li
False
answered Feb 17, 2011 at 10:00
EduardoEduardo
1,7811 gold badge11 silver badges5 bronze badges
0
The best way is probably to use the list method .index.
For the objects in the list, you can do something like:
def __eq__(self, other):
return self.Value == other.Value
with any special processing you need.
You can also use a for/in statement with enumerate(arr)
Example of finding the index of an item that has value > 100.
for index, item in enumerate(arr):
if item > 100:
return index, item
Source
tedder42
23.1k12 gold badges86 silver badges99 bronze badges
answered Mar 3, 2009 at 1:51
Brian R. BondyBrian R. Bondy
337k124 gold badges592 silver badges635 bronze badges
Here is another way using list comprehension (some people might find it debatable). It is very approachable for simple tests, e.g. comparisons on object attributes (which I need a lot):
el = [x for x in mylist if x.attr == "foo"][0]
Of course this assumes the existence (and, actually, uniqueness) of a suitable element in the list.
answered Sep 24, 2010 at 9:35
ThomasHThomasH
22.1k13 gold badges60 silver badges61 bronze badges
3
assuming you want to find a value in a numpy array,
I guess something like this might work:
Numpy.where(arr=="value")[0]
Jorgesys
123k23 gold badges328 silver badges264 bronze badges
answered Jan 27, 2011 at 15:03
2
There is the index
method, i = array.index(value)
, but I don’t think you can specify a custom comparison operator. It wouldn’t be hard to write your own function to do so, though:
def custom_index(array, compare_function):
for i, v in enumerate(array):
if compare_function(v):
return i
answered Mar 3, 2009 at 1:50
David ZDavid Z
127k27 gold badges252 silver badges277 bronze badges
I use function for returning index for the matching element (Python 2.6):
def index(l, f):
return next((i for i in xrange(len(l)) if f(l[i])), None)
Then use it via lambda function for retrieving needed element by any required equation e.g. by using element name.
element = mylist[index(mylist, lambda item: item["name"] == "my name")]
If i need to use it in several places in my code i just define specific find function e.g. for finding element by name:
def find_name(l, name):
return l[index(l, lambda item: item["name"] == name)]
And then it is quite easy and readable:
element = find_name(mylist,"my name")
answered Oct 20, 2011 at 12:30
jkijki
4,6171 gold badge34 silver badges29 bronze badges
0
The index method of a list will do this for you. If you want to guarantee order, sort the list first using sorted()
. Sorted accepts a cmp or key parameter to dictate how the sorting will happen:
a = [5, 4, 3]
print sorted(a).index(5)
Or:
a = ['one', 'aardvark', 'a']
print sorted(a, key=len).index('a')
answered Mar 3, 2009 at 1:52
Jarret HardieJarret Hardie
94.4k10 gold badges132 silver badges126 bronze badges
how’s this one?
def global_index(lst, test):
return ( pair[0] for pair in zip(range(len(lst)), lst) if test(pair[1]) )
Usage:
>>> global_index([1, 2, 3, 4, 5, 6], lambda x: x>3)
<generator object <genexpr> at ...>
>>> list(_)
[3, 4, 5]
answered Mar 3, 2009 at 2:06
2
I found this by adapting some tutos. Thanks to google, and to all of you 😉
def findall(L, test):
i=0
indices = []
while(True):
try:
# next value in list passing the test
nextvalue = filter(test, L[i:])[0]
# add index of this value in the index list,
# by searching the value in L[i:]
indices.append(L.index(nextvalue, i))
# iterate i, that is the next index from where to search
i=indices[-1]+1
#when there is no further "good value", filter returns [],
# hence there is an out of range exeption
except IndexError:
return indices
A very simple use:
a = [0,0,2,1]
ind = findall(a, lambda x:x>0))
[2, 3]
P.S. scuse my english
answered Oct 16, 2011 at 11:41
Привет всем! Сегодня мы узнаем, как в Python найти элемент списка. Поехали!
В Python можно найти элемент списка с помощью метода index() или с помощью оператора in.
Например, посмотрим на следующий список цветов:
colors = ['красный', 'зеленый', 'синий']
Если мы хотим найти индекс цвета ‘зеленый’ в этом списке, мы можем сделать следующее:
colors = ['красный', 'зеленый', 'синий'] green_index = colors.index('зеленый') print(green_index) # выведет 1
Конечно, если мы попробуем найти, например, желтый цвет — то получим ошибку — ибо у нас нет обработки исключений. Я писал об этом здесь. В данном же случаем обработку исключений можно представить в следующем виде:
try: print(green_index) except ValueError: print("Элемент не существует в списке")
Теперь разберемся, как найти поиск элемента списка с помощью оператора in. Для примера берем все тот же список цветов 🙂 Если мы хотим проверить, присутствует ли цвет ‘желтый’ в списке — попробуем следующий код:
colors = ['красный', 'зеленый', 'синий'] if 'желтый' in colors: print('Желтый имеется в списке цветов') else: print('Желтый не имеется в списке цветов')
Выведет ‘Желтый не имеется в списке цветов’, потому что ‘желтый’ не присутствует в списке colors.
А еще для поиска элемента списка можно использовать функцию enumerate(), которая позволяет итерироваться по списку и одновременно получать индекс нужного элемента. Используется эта функция в случае, если нужно сделать какую-либо операцию над элементом списка и одновременно знать его (этого элемента) индекс.
Для примера — возьмем код, который позволит вывести значение элемента списка и его индекс:
my_list = [1, 2, 3] for index, value in enumerate(my_list): print(f"Индекс: {index}, Значение: {value}")
Надеюсь, теперь тема по поиску элемента с списке в Python стала более простой 🙂 Как всегда — в случае возникновения вопросов пишите на почту или в Telegram.
Больше …
Привет всем! Сегодня коротенький пост (на самом деле не пост…