Python – Получить индекс или положение элемента в списке
Python – найти индекс или положение элемента в списке
Чтобы найти индекс первого вхождения элемента в данном списке Python, вы можете использовать индекс () метод списка класса с элементом, пройденным в качестве аргумента.
Метод Index () Возвращает целое число, которое представляет индекс первого совпадения указанного элемента в списке.
Вы также можете предоставить начальные и конец позиции списка, где поиск должен произойти в списке.
Ниже приведен синтаксис индекса () функции с начальными и торцевыми позициями.
Начать Параметр необязательный. Если вы предоставляете значение для Начать Тогда конец не является обязательным.
Мы посмотрим на примеры, где мы проходим через каждый из этих сценариев подробно.
Пример 1. Найти индекс элемента в списке
В следующем примере мы взяли список с номерами. Использование метода Index () Мы найдем индекс товара 8 в списке.
Элемент присутствует на 3-й позиции, поэтому mylist.index () Функция возвращена 2.
Пример 2: Найти индекс элемента в списке – начало, конец
В следующем примере мы взяли список с номерами. Использование метода Index () Мы найдем индекс товара 8 в списке. Кроме того, мы будем проходить начало и конец. Функция index () рассматривает только те элементы в списке, начиная с Начать Индекс, до конец позиция в Милист Отказ
Пример 3: Найти индекс элемента – элемент имеет несколько вхождений в списке
Список Python может содержать несколько вхождений элемента. В таких случаях возвращается только индекс первого вхождения указанного элемента в списке.
Элемент 52 присутствует два раза, но только индекс первого вхождения возвращается методом индекса ().
Давайте понять, как работает метод индекса (). Функция сканирует список от начала. Когда элемент соответствует аргументу, функция возвращает этот индекс. Последние вхождения игнорируются.
Пример 4: Найти индекс элемента в списке – товар отсутствует
Если элемент, который мы ищем в списке, нет, вы получите ValueError с сообщением Товар не в списке Отказ
В следующей программе мы предприняли список и постараемся найти индекс элемента, который отсутствует в списке.
В качестве индекса () можно бросить ValueError, используйте Python Try – за исключением при использовании индекса (). В следующем примере мы узнаем, как использовать оператор TRY – кроме, для обработки этого ValueError.
Элемент, индекс которого мы пытаемся найти, нет в списке. Поэтому mylist.index (товар) бросает valueError. За исключением ValueError: Блок ловит эту ошибку, а соответствующий блок выполнен.
Резюме
В этом учебном пособии Python мы узнали, как найти индекс элемента/элемента в списке, с помощью хорошо подробных примеров.
Как найти индекс конкретного числа в списке? Python
К примеру у нас есть список x = [1, 4, 6, 4, 6, 7, 8], как найти индекс числа 7?
![]()
Если вас интересует именно list , вам нужна функция index :
![]()
Если нужных чисел в списке несколько, можно их индексы найти так:
![]()
Думаю, что решения с методом index вам поможет решить задачу, но хотелось бы подметить несколько важных моментов. Метод index работает за O(n) . Что не самый плохой результат, но всё же не идеальный. Для более эффективного поиска элемента в списке можно применить, так называемый "бинарный поиск".
Его худшая асимптотика — O(log n) , что намного лучше, чем у index . Но для корректной работы бинарного поиска необходимо, чтобы список был отсортирован. Т.е. если в вашей задаче дан заведомо отсортированный список, то стоит обратить внимание на бинарный поиск.
В python есть стандартная библиотека, реализующая бинарный поиск — bisect .
Как проверить, есть ли числа в списке в Python
Можно ли проверить, есть ли определенные числа в списке в Python? Если так, то как ты это делаешь?
Мой код выглядит следующим образом:
Я вставил входные данные melt == 1541 и boil == 2830 и ожидал выхода Is scandium your chosen element? , но вместо этого получил
Напротив, входы для расплава 999 и кипения 333 работают (иш) с целью тестирования
Но как мне проверить, в каком списке находятся данные входные данные, и найти этот элемент?
Изменить!
Спасибо всем за помощь во всех ответах, мне помогли, и я добавил все предложения (кроме try except else , если кто-то не хочет помочь: D) в мой код назначения (этот!). Все это правильные ответы, но поскольку я могу отметить только один, я отметил самый верхний. Еще раз спасибо!
4 ответа
Первое условие — сравнение одного значения со списками. Бросьте его и используйте вместо:
И вместо второго условия (также с неправильным сравнением) вы можете добавить в цикл предложение else с (не идентифицируйте слово else , так как оно принадлежит первому for а не if ):
См. Ниже (обратите внимание, что код использует namedtuple для улучшения читаемость )
Если элементы находятся в нескольких списках, код ниже должен работать:
Чтобы убедиться, что ваши входные данные действительно являются числами, вы можете сделать это:
По сути, внутри цикла вы запрашиваете ввод у пользователя. Если int() завершается успешно, цикл завершается, спасибо за ключевое слово break , и вы можете смело предполагать, что melt и boil являются целыми числами в остальной части вашей программы. Если int() завершается неудачно, он вызывает ValueError , а ключевое слово continue просто гарантирует, что мы снова зациклимся.
Если при вводе melt пользователь дает число, например, 1541, тогда переменная melt будет содержать целое число, 1541. Однако ваш listA элементов содержит список из 3 элементов, строку и 2 целых числа.
Таким образом, когда вы проверяете, находится ли melt в listA , он ничего не находит, потому что сравнение 1541 с [«scandium», 1541, 2830] вернет False, поскольку оба не равны.
Более того, использование списка для хранения элементов и их точки кипения не является идеальным. К примеру, трудно получить доступ к точке кипения элементов, так как она находится в списке. Реализация в словаре, или, что еще лучше, реализация в фрейме данных (например, pandas) будет гораздо более эффективной.
Чтобы вернуться к вашему коду, вот быстрое решение:
Наконец, вы также должны иметь дело с проверкой ошибок ввода, чтобы подтвердить, что пользователь вводит правильные данные.
Изменить: словари
С помощью словаря вы можете связать ключ со значением. Ключ и значение могут быть любыми: число, список, объекты, словари. Единственное условие — ключ должен иметь определенный метод hash() .
Например, вы можете сохранить элементы со строкой в качестве ключа, а 2 температуры в качестве значений.
Чтобы получить доступ к элементам, вы вызываете elements[«scandium»] , который вернется (1541, 2830). Вы также можете получить доступ к элементам словаря с 3 функциями:
- elements.keys() : вернуть ключи
- elements.values() : вернуть значения
- elements.items() : вернуть кортежи (ключ, значение)
Однако, опять же, нелегко получить индивидуальный доступ к температуре. Но на этот раз вы можете сравнить это так:
Но еще лучше, поскольку вы ищете элемент по температуре плавления и кипения, вы можете создать следующий словарь, в котором ключами являются кортеж (кипение, плавление), а значением является соответствующий элемент.
Затем, когда пользователь введет melt и boil , вы можете найти соответствующий элемент с помощью: elements[(melt, boil)] . На этот раз нет необходимости использовать цикл. Соответствующий элемент может быть непосредственно доступен. Подобная реализация может быть сделана с кадром данных Pandas.
Наконец, вы также можете реализовать это с помощью класса.
Таким образом, класс Element нельзя использовать в качестве ключа словаря. Чтобы его можно было использовать в качестве ключа, необходимо определить метод hash .
Но опять же, не так просто получить доступ к элементу из переменных melt и boil . Цикл снова необходим.
Какие числа будут находиться в списке
Copy raw contents
Copy raw contents
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
- 19.07.2017 14:44
- Информатика
- remove_red_eye 11903
- thumb_up 25
var a: array of integer;
i,n: integer;
begin
write(‘n = ‘); readln(n);
setlength(a,n+1);
for i:=1 to n do read(a[i]);
for i:=2 to n do
if a[i]>a[i-1] then write(a[i],’ ‘);
end.