logo

파이썬 | 목록에서 값의 인덱스를 찾는 방법

일반적으로 특정 값이 위치한 인덱스를 찾아야 합니다. index() 등을 사용하여 이를 달성하는 방법이 많이 있습니다. 그러나 목록에 여러 번 나타나는 경우 특정 값의 모든 인덱스를 찾아야 하는 경우가 있습니다. 주어진 목록에서 가치 지수를 찾는 특정 방법을 논의해 보겠습니다. 파이썬 .

목록에서 값의 인덱스를 찾는 방법

이 기사에서 다룰 방법은 다음과 같습니다.

Naive 방법을 사용하여 항목의 인덱스 찾기

목록을 반복하고 해당 값을 확인한 다음 새 목록에 값 인덱스를 추가하고 인쇄하면 이 작업을 수행할 수 있습니다. 이것이 이 작업을 달성하기 위한 기본적인 무차별 대입 방법입니다.



파이썬3




# 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]>

시간 복잡도: 에)
보조 공간: 에)

배우 란비르 카푸어 나이

List Comprehension을 사용하여 항목의 색인 찾기

목록 이해 무차별 대입 작업을 수행하기 위한 속기 기술일 뿐이며 작업을 수행하기 위해 더 적은 줄의 코드를 사용하므로 프로그래머의 시간이 절약됩니다.

파이썬3




# 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]>

시간 복잡도: 에)
보조 공간: 에)

Enumerate()를 사용하여 항목의 인덱스 찾기 에프 기름 부음

사용 낱낱이 세다() 비슷한 작업을 수행할 수 있습니다. 이는 위보다 약간 빠른 기술이므로 목록 이해 기술보다 사용하는 것이 좋습니다.

파이썬3




# 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]>

시간 복잡도: 에)
보조 공간: 에)

filter()를 사용하여 항목의 인덱스 찾기 에프 기름 부음

이는 이 특정 작업을 달성하기 위해 사용할 수 있는 또 다른 방법입니다. 필터() 일반적으로 필터링 작업을 수행할 수 있으므로 이 상황에서 이 작업을 수행하는 데 사용될 수도 있습니다.

파이썬3




# 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]>

시간 복잡도: 에)
보조 공간: 에)

numpy 라이브러리를 사용하여 항목의 인덱스 찾기

이 프로그램은 numpy 라이브러리 주어진 목록을 배열로 변환하려면 배열에서 주어진 값의 인덱스를 찾고 결과를 변환합니다. numpy 배열 목록으로 돌아갑니다. 마지막으로 인덱스 목록을 인쇄합니다.

파이썬3

Ravel은 파이썬에서 무엇을 하나요?




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라는 빈 목록을 초기화합니다. for 루프를 사용하여 입력 목록 test_list의 각 요소를 반복합니다. 현재 요소가 대상 값과 일치하면 해당 인덱스를 res_list에 추가합니다. 루프가 완료된 후 , res_list를 출력으로 반환합니다.

파이썬3




# 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는 목표 값의 발생 횟수입니다.

while 루프와 함께 list.index() 메서드를 사용하여 항목의 인덱스 찾기

주어진 값의 인덱스를 저장하기 위해 빈 목록 인덱스를 초기화합니다. 변수 i를 -1로 초기화합니다. break 문을 만날 때까지 계속되는 while 루프를 실행합니다. while 루프 내에서 목록.색인() 인덱스 i + 1부터 시작하는 리스트에서 주어진 값의 인덱스를 찾는 메소드입니다. 인덱스가 발견되면 이를 인덱스 리스트에 추가하고 i의 값을 발견된 인덱스로 업데이트합니다. 인덱스를 찾지 못하면 중단합니다. while 루프.인덱스 목록을 인쇄합니다.

파이썬3




스리데비
# 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)입니다.