산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> python

파이썬 list.index() – 요소 위치 찾기 실전 예제와 대안 기법

파이썬 리스트는 정수, 문자열, 불리언, 중첩 리스트 등 모든 데이터 타입의 아이템을 담을 수 있는 순서 있는 컬렉션입니다. 내장 list.index() 메서드는 시퀀스 내에서 요소의 위치를 찾는 가장 빠른 방법입니다. 아래에서 단계별 가이드와 코드 스니펫, 그리고 요소가 여러 번 나타날 때 모든 인덱스를 가져오는 대안 기법들을 다룹니다.

list.index() 이해하기

list.index() 메서드는 지정된 값이 나타나는 가장 낮은 인덱스를 반환합니다. 값이 없으면 ValueError를 발생시킵니다. 자세한 내용은 공식 파이썬 문서를 참조하세요.

문법

list.index(요소, start=0, end=len(list))

매개변수

매개변수설명
요소찾고자 하는 값
start선택. 이 인덱스부터 검색 시작. 기본값 0.
end선택. 이 인덱스 직전까지 검색. 기본값은 리스트 길이.

반환값

첫 번째 일치 요소의 정수 인덱스 반환. 요소가 없으면 ValueError 발생.

예제: 기본 사용법

my_list = ['A', 'B', 'C', 'D', 'E', 'F']
print("Index of 'C':", my_list.index('C')) # 2
print("Index of 'F':", my_list.index('F')) # 5

예제: start와 end 사용

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("Index of 'C' between 1 and 5:", my_list.index('C', 1, 5)) # 2
print("Index of 'F' between 3 and 7:", my_list.index('F', 3, 7)) # 5
print("Index of 'D' starting from 1:", my_list.index('D', 1)) # 3

예제: 요소를 찾지 못한 경우

my_list = ['A', 'B', 'C', 'D']
try:
    my_list.index('Z')
except ValueError as e:
    print(e) # 'Z' is not in list

반복되는 요소의 모든 인덱스 가져오기

값이 여러 번 나타나면 list.index()는 첫 번째 위치만 반환합니다. 아래는 모든 인덱스를 수집하는 여러 접근법입니다.

For-루프 사용

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
indices = []
for i, val in enumerate(my_list):
    if val == 'Guru':
        indices.append(i)
print(indices) # [0, 3, 6]

while-루프와 index() 조합

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
indices = []
next_index = -1
while True:
    try:
        next_index = my_list.index('Guru', next_index + 1)
        indices.append(next_index)
    except ValueError:
        break
print(indices) # [0, 3, 6]

리스트 컴프리헨션

indices = [i for i, val in enumerate(my_list) if val == 'Guru']
print(indices) # [0, 3, 6]

enumerate() 사용

indices = [i for i, val in enumerate(my_list) if val == 'Guru']
print(indices) # [0, 3, 6]

filter() 사용

indices = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list))))
print(indices) # [0, 3, 6]

고급 기법

대용량 데이터셋을 위한 NumPy

수치 또는 대용량 텍스트 데이터를 다룰 때 리스트를 NumPy 배열로 변환하면 검색 속도를 높일 수 있습니다.

pip install numpy
import numpy as np
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
array = np.array(my_list)
indices = np.where(array == 'Guru')[0]
print(indices) # [0 3 6]

more_itertools.locate()

함수형 접근을 선호한다면 more_itertools.locate()가 조건을 만족하는 인덱스 이터레이터를 반환합니다.

pip install more_itertools
from more_itertools import locate
indices = list(locate(my_list, lambda x: x == 'Guru'))
print(indices) # [0, 3, 6]

핵심 요약

python

  1. C++ std::list 마스터하기: 문법, 함수, 실전 예제
  2. Python strip() 메서드 완전 정복: 종합 가이드와 실전 예제
  3. Python str.count() 마스터하기: 문자 및 부분문자열 개수 세기 예제
  4. 파이썬 round() 함수 완전 정복: 실용 예제로 이해하기
  5. 파이썬 map() 함수 마스터하기: 문법, 예제, 모범 사례
  6. 파이썬 timeit()으로 실행 시간 측정하기: 실용 예제
  7. 파이썬 collections.Counter: 효율적 카운팅, 업데이트, 산술 연산
  8. 파이썬 list.count() 전문가 가이드: 실전 예제로 배우는 요소 개수 세기
  9. 파이썬 리스트에서 중복 요소 제거하는 8가지 방법
  10. 파이썬 리스트에서 항목 제거하기: remove(), pop(), clear(), del 완벽 가이드