Python의 목록에서 요소의 모든 인덱스 찾기

Manav Narula 2023년1월30일 Python Python List
  1. for 루프를 사용하여 요소의 모든 발생 인덱스 찾기
  2. numpy.where()함수를 사용하여 Python에서 요소의 모든 발생 색인 찾기
  3. more_itertools.locate()함수를 사용하여 요소의 모든 발생 인덱스를 찾습니다
Python의 목록에서 요소의 모든 인덱스 찾기

목록은 Python에서 단일 이름으로 여러 요소를 저장하는 데 사용됩니다. 각 요소는 목록에서의 위치를 ​​사용하여 액세스 할 수 있습니다. 요소는 목록의 여러 위치에있을 수 있습니다.

이 튜토리얼에서는 목록에서 특정 요소의 모든 발생 인덱스를 찾는 방법을 소개합니다. 다음 목록을 사용하여 1요소의 모든 인덱스를 찾습니다.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

for 루프를 사용하여 요소의 모든 발생 인덱스 찾기

목록을 쉽게 반복하고 각 요소를 필요한 요소와 비교하고 색인을 찾을 수 있습니다. 최종 결과를 새 목록에 저장할 수 있습니다. 다음 예에서는range()함수를 사용하여 목록을 반복합니다.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = []
x = 1  # The required element

for i in range(len(l1)):
    if l1[i] == x:
        pos.append(i)
print(pos)

출력:

[0, 2, 8]

위의 코드를보다 효율적이고 간결하게 구현하는 방법은 아래 목록 이해를 사용하는 것입니다.

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = [i for i in range(len(l1)) if l1[i] == 1]
print(pos)

출력:

[0, 2, 8]

마찬가지로 인덱스와 값을 함께 반환하는enumerate()함수를 사용할 수도 있습니다. 예를 들면 :

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i, x in enumerate(l1) if x == 1]
print(pos)

출력:

[0, 2, 8]

numpy.where()함수를 사용하여 Python에서 요소의 모든 발생 색인 찾기

NumPy 라이브러리에는 특정 조건에 따라 배열에서 요소의 인덱스를 반환하는 데 사용되는where()함수가 있습니다. 이 방법의 경우 목록을 배열로 전달해야합니다. 최종 결과도 배열에 있습니다. 다음 코드 스 니펫은이 메서드를 사용하는 방법을 보여줍니다.

import numpy as np

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = np.where(np.array(l1) == 1)[0]

print(pos)

출력:

[0 2 8]

more_itertools.locate()함수를 사용하여 요소의 모든 발생 인덱스를 찾습니다

more_itertools는 타사의 편리한 모듈입니다. iterable로 작업 할 때 효율적이고 간결한 코드를 만들 수있는 많은 함수가 있습니다. 이 모듈의locate()함수는 조건에 대해True 인 요소의 인덱스를 반환합니다. itertools 객체를 반환합니다. 다음 코드 스 니펫은이 방법을 사용하는 방법을 설명합니다.

from more_itertools import locate

l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]

pos = list(locate(l1, lambda x: x == 1))

print(pos)

출력:

[0, 2, 8]

최종 결과가 목록 형식인지 확인하기 위해list()함수를 사용합니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Python List