Перейти к содержимому

Как найти значение в списке python

  • автор:

Поиск в списке внутри списка

Есть список вида [[10, 3], [20, 1], [11, 4], . ]
Можно ли так сформулировать поиск, чтобы искать входит ли искомое число (например 12) во внутренние списки на первой позиции. То есть нет ли числа 12 среди ряда 10, 20, 11 . и в случае, если входит, то получить индекс вида list[][] ?

Отслеживать
6,373 5 5 золотых знаков 25 25 серебряных знаков 56 56 бронзовых знаков
задан 2 мар 2018 в 16:08
97 1 1 золотой знак 4 4 серебряных знака 12 12 бронзовых знаков
можно конечно, почему нет
2 мар 2018 в 16:28
Похоже я не доформулировал вопрос. А если можно, то как?
2 мар 2018 в 16:32
тут скорее не хватает попыток и вашего кода, с формулировками все ясно
2 мар 2018 в 16:33
В настоящее время я разделяю их на два списка и ищу в прямом (. Я только изучаю язык.
2 мар 2018 в 16:36

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

l=[[12, 3], [20, 12], [12, 4], [3, 4]] 

Находим индекс листа, содержащего 12 и индекс в этом листе:

>>> [(n,x.index(12)) for n,x in enumerate(l) if 12 in x] [(0, 0), (1, 1), (2, 0)] 

Находим индексы листов, в которых первый элемент 12:

>>> [n for n,x in enumerate(l) if x[:1]==[12]] [0, 2] 

Отслеживать
ответ дан 2 мар 2018 в 18:23
Amaro Vita Amaro Vita
321 1 1 серебряный знак 8 8 бронзовых знаков

collection_of_numbers = [[12, 3], [20, 1], [12, 4]] for index, list_of_numbers in enumerate(collection_of_numbers): if 12 == list_of_numbers[0]: print('list[][0]'.format(index)) indecec = [index for (index, list_of_numbers) in enumerate(collection_of_numbers) if list_of_numbers[0] == 12] for index in indecec: print('list[][0]'.format(index)) 

Отслеживать
ответ дан 2 мар 2018 в 16:46
6,151 3 3 золотых знака 19 19 серебряных знаков 38 38 бронзовых знаков

Чтобы узнать, есть ли 12 на первой позиции во вложенных списках:

>>> pairs = [[10, 3], [20, 1], [11, 4], [12, 4]] >>> any(x == 12 for x, *_ in pairs) True 

Чтобы найти индекс пары cо значением 12 на первой позиции:

>>> next(i for i, (x, _) in enumerate(pairs) if x == 12) 3 

Чтобы найти все индексы пар из списка, у которых на первой позиции 12 :

>>> [i for i, (x, _) in enumerate(pairs) if x == 12] [3] 

Отслеживать
ответ дан 3 мар 2018 в 10:55
52.3k 11 11 золотых знаков 108 108 серебряных знаков 312 312 бронзовых знаков

В задаче требуется получить индекс (или в общем случае — индексы), а не просто проверить наличие или отсутствие заданного числа на заданной позиции.

3 мар 2018 в 11:59

Вариант с next(. ) в представленном виде находит только первое вхождение 12 в список. Для того, что-бы эту идею ( с next) довести до работающего состояния — надо явно создать итератор (ф-цией iter), а затем циклом с next вытянуть все индексы. Как по мне — сложновато.

3 мар 2018 в 17:23
@passant в вопросе «индекс» или «индексы» по вашему написано?
3 мар 2018 в 17:24

Вообще-то в программировании принято писать либо «найти первое вхождение», и тогда достаточно того, что написано, либо — если это не указано явно — рассматривать все возможные случаи, а именно: ноль вхождений, одно вхождение, много вхождений. Разве не так? Впрочем, если мы говорим о школьных задачах и подходах — может это и излишне, но прививать соответствующие навыки даже школьникам — все-же не помешает.

3 мар 2018 в 17:31

@passant в русском языке слово «индекс» означает единственное число. Мы можем ожидать что и ребёнок различает один и больше одного.

Python — как найти элемент списка?

Python - как найти элемент списка

Привет всем! Сегодня мы узнаем, как в 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"Индекс: , Значение: ")

Надеюсь, теперь тема по поиску элемента с списке в Python стала более простой �� Как всегда — в случае возникновения вопросов пишите на почту или в Telegram.

Нахождение индекса элемента в списке Python

Иногда при работе с различными структурами данных в Python возникает необходимость найти индекс определенного элемента в списке. Это становится особенно актуально при работе со списками, где порядок элементов имеет значение.

Пример

Допустим, есть список со следующими элементами:

fruits = ["apple", "banana", "cherry", "date", "elderberry"]

И задача состоит в том, чтобы найти позицию элемента «cherry» в этом списке.

Решение

Для решения этой задачи в Python предусмотрен встроенный метод списков под названием index() . Этот метод принимает один аргумент — элемент, индекс которого нужно найти, и возвращает первый индекс этого элемента в списке.

Код для решения этой задачи будет выглядеть следующим образом:

fruits = ["apple", "banana", "cherry", "date", "elderberry"] index = fruits.index("cherry") print(index)

В результате выполнения этого кода будет выведено число 2, что соответствует индексу элемента «cherry» в списке fruits .

Ограничения метода index()

Однако стоит учесть, что метод index() выбросит исключение ValueError , если элемент, индекс которого пытаются найти, отсутствует в списке. Чтобы избежать этого, можно предварительно проверить наличие элемента в списке с помощью оператора in . Если элемент присутствует в списке, то можно безопасно вызывать метод index() .

fruits = ["apple", "banana", "cherry", "date", "elderberry"] if "cherry" in fruits: index = fruits.index("cherry") print(index) else: print("Элемент не найден в списке.")

В этом случае, если элемента «cherry» не будет в списке fruits , программа выведет сообщение «Элемент не найден в списке.»

Что делает функция индекс в Python?

Метод index() в Python помогает найти значение индекса элемента в последовательности. Он выдает наименьший возможный индекс указанного элемента. Если указанный элемент не существует, то возвращается ValueError.

sequence.index(x[, start[, end]]) 
  • sequence — это объект, элементы которого представляют собой некую индексированную последовательность (строка, список, кортеж). Каждый элемент последовательности имеет индекс — целое число, обозначающее его позицию в последовательности. Нумерация индексов начинается с 0 (нуля).
  • x — искомый элемент последовательности, чей наименьший индекс будет возвращен.
  • Необязательные аргументы start и end используются для ограничения поиска конкретной подпоследовательностью списка, путем задания среза. Возвращаемый индекс вычисляется относительно изначальной последовательности, а не среза, заданного start и end.
str_seq = 'aebcdef' #Последовательность в виде строки print(str_seq.index('e')) # => 1 print(str_seq.index('e', 2)) # => 5 print(str_seq.index('k')) # => ValueError: substring not found lst_seq = ['a', 'e', 'b', 'c', 'd', 'e', 'f'] #Последовательность в виде списка print(lst_seq.index('b')) # => 2 print(lst_seq.index('k')) # => ValueError: 'k' is not in list tup_seq = ('a', 'e', 'b', 'c', 'd', 'e', 'f') #Последовательность в виде кортежа print(tup_seq.index('a')) # => 0 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *