logo

Python | Способи пошуку індексів вартості в списку

Зазвичай нам потрібно знайти індекс, у якому знаходиться конкретне значення. Існує багато методів для досягнення цього, використовуючи index() тощо. Але іноді потрібно знайти всі індекси певного значення, якщо воно має кілька входжень у списку. Давайте обговоримо певні способи пошуку індексів вартості в наданому списку Python .

Способи пошуку індексів вартості в списку

Нижче наведено методи, які ми розглянемо в цій статті.



Знайдіть індекс елемента за допомогою простого методу

Ми можемо виконати це завдання, пройшовши список і перевіривши це значення, просто додавши індекс значення в новий список і надрукувавши його. Це основний метод грубої сили для досягнення цього завдання.

Python3








# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using naive method to find indices for 3> res_list>=> []> for> i>in> range>(>0>,>len>(test_list)):> >if> test_list[i]>=>=> 3>:> >res_list.append(i)> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))>

>

>

Вихід

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Часова складність: O(n)
Допоміжний простір: O(n)

пункти sql

Знайдіть індекс елемента за допомогою розуміння списку

Розуміння списку це лише скорочена техніка для виконання завдання грубої сили, лише використовується менша кількість рядків коду для виконання завдання і, отже, економить час програмістів.

Python3




# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using list comprehension> # to find indices for 3> res_list>=> [i>for> i>in> range>(>len>(test_list))>if> test_list[i]>=>=> 3>]> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))>

>

>

Вихід

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Часова складність: O(n)
Допоміжний простір: O(n)

Знайдіть індекс елемента за допомогою Enumerate() Ф соборування

Використання enumerate() ми можемо виконати подібне завдання, це трохи швидший метод, ніж описаний вище, тому його рекомендується використовувати замість методу розуміння списку.

Python3




# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using enumerate()> # to find indices for 3> res_list>=> [i>for> i, value>in> enumerate>(test_list)>if> value>=>=> 3>]> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))>

приховані програми
>

>

Вихід

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Часова складність: O(n)
Допоміжний простір: O(n)

Знайдіть індекс елемента за допомогою filter() Ф соборування

Це ще один метод, який можна застосувати для вирішення цього конкретного завдання, фільтр() зазвичай здатний виконувати завдання фільтрації і, отже, також може використовуватися в цій ситуації для досягнення цього завдання.

Python3




# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(test_list))> # using filter() to find indices for 3> res_list>=> list>(>filter>(>lambda> x: test_list[x]>=>=> 3>,>range>(>len>(test_list))))> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))>

>

>

Вихід

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Часова складність: O(n)
Допоміжний простір: O(n)

Знайдіть індекс елемента за допомогою бібліотеки numpy

Ця програма використовує бібліотека numpy щоб перетворити заданий список у масив, знаходить індекси заданого значення в масиві та перетворює отриманий масив numpy повернутися до списку. Нарешті, він друкує список індексів.

Python3




import> numpy as np> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # convert the list to a numpy array> test_array>=> np.array(test_list)> # find the indices of the value 3 in the array> res_array>=> np.where(test_array>=>=> 3>)[>0>]> # convert the numpy array back to a list> res_list>=> list>(res_array)> # printing resultant list> print>(>'New indices list : '> +> str>(res_list))>

>

>

ВИХІД:

New indices list : [1, 3]>

Часова складність: O(n), де n - довжина вхідного списку.
Допоміжні приміщення: O(n), оскільки він створює новий масив numpy такої ж довжини, що й список вхідних даних.

Знайдіть індекс елемента за допомогою циклу for

Ініціалізуйте порожній список під назвою res_list, щоб зберегти індекси цільових значень. Перейдіть по кожному елементу вхідного списку test_list за допомогою циклу for. Якщо поточний елемент відповідає цільовому значенню, додайте його індекс до res_list. Після завершення циклу повертає res_list як результат.

Python3




# initializing list> test_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list: '> +> str>(test_list))> # using a for loop to find indices for 3> res_list>=> []> for> i>in> range>(>len>(test_list)):> >if> test_list[i]>=>=> 3>:> >res_list.append(i)> # printing resultant list> print>(>'New indices list: '> +> str>(res_list))>

>

>

Вихід

Original list: [1, 3, 4, 3, 6, 7] New indices list: [1, 3]>

Часова складність: O(n) , де n – довжина вхідного списку test_list.
Допоміжний простір: O(k) , де k – кількість входжень цільового значення.

Знайдіть індекс елемента за допомогою методу list.index() із циклом while

Ініціалізуйте порожній список індексів, щоб зберегти індекси заданого значення. Ініціалізуйте змінну i рівним -1. Запустіть цикл while, який продовжується, доки не зустрінеться оператор break. Усередині циклу while використовуйте list.index() метод пошуку індексу заданого значення в списку, починаючи з індексу i + 1. Якщо індекс знайдено, додайте його до списку індексів і оновіть значення i до знайденого індексу. Якщо індекс не знайдено, перервіть цикл while. Надрукувати список індексів.

Python3




concat рядки java
# initializing list> my_list>=> [>1>,>3>,>4>,>3>,>6>,>7>]> # printing initial list> print>(>'Original list : '> +> str>(my_list))> # using list.index() method with a while loop to find indices for 3> indexes>=> []> i>=> ->1> while> True>:> >try>:> >i>=> my_list.index(>3>, i>+> 1>)> >indexes.append(i)> >except> ValueError:> >break> print>(>'New indices list : '> +> str>(indexes))>

>

>

Вихід

Original list : [1, 3, 4, 3, 6, 7] New indices list : [1, 3]>

Часова складність: O(n), метод list.index() має часову складність O(n) у гіршому випадку, оскільки йому потрібно пройти через список, щоб знайти індекс заданого значення. Цикл while також має часову складність O(n) у гіршому випадку, тому що йому потрібно перебирати список, щоб знайти всі входження заданого значення.
Допоміжний простір: O(1), простір, який використовується списком індексів і змінною i, є постійним і не залежить від розміру вхідного списку, тому складність допоміжного простору становить O(1).