파이썬에서 리스트를 다루다 보면 다양한 위치에 있는 요소에 접근해야 하는 경우가 자주 발생합니다. 이 글에서는 리스트에서 특정 요소의 인덱스를 찾거나, 모든 요소의 인덱스와 값을 한꺼번에 가져오는 대표적인 세 가지 방법을 예제와 함께 살펴보겠습니다.
1. list.index() 메서드 사용하기
아래 프로그램은 주어진 리스트에서 서로 다른 요소들의 인덱스를 구하는 방법을 보여줍니다. index() 메서드에 원하는 요소의 값을 매개변수로 전달하면, 해당 요소가 위치한 인덱스를 반환합니다. 단, 중복된 값이 있을 경우 가장 처음 등장하는 위치만 반환된다는 점을 기억해 두세요.
예제
listA = [11, 45, 27, 8, 43]
# 45의 인덱스 출력
print("Index of 45: ", listA.index(45))
listB = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
# 'Wed'의 인덱스 출력
print("Index of Wed: ", listB.index('Wed'))실행 결과
('Index of 45: ', 1)
('Index of Wed: ', 3)리스트 A에서 45는 두 번째 위치(인덱스 1)에, 리스트 B에서 'Wed'는 네 번째 위치(인덱스 3)에 있으므로 위와 같은 결과가 출력됩니다.
2. range()와 len() 조합하기
리스트의 모든 요소에 대한 인덱스와 값을 함께 확인하고 싶다면 range(len(리스트))를 활용할 수 있습니다. 아래 예제는 리스트를 순회하면서 각 인덱스와 그 위치의 값을 튜플 형태로 묶어 출력합니다.
예제
listA = [11, 45, 27, 8, 43]
# 주어진 리스트
print("Given list: ", listA)
# 모든 인덱스와 값 출력
print("Index and Values: ")
print([list((i, listA[i])) for i in range(len(listA))])실행 결과
Given list: [11, 45, 27, 8, 43] Index and Values: [[0, 11], [1, 45], [2, 27], [3, 8], [4, 43]]
리스트 컴프리헨션(list comprehension)을 사용하면 반복문 없이도 인덱스와 값의 쌍을 간결하게 생성할 수 있습니다.
3. enumerate() 함수 사용하기
enumerate() 함수는 리스트의 각 요소 값과 함께 인덱스 위치를 자동으로 추적해 줍니다. 리스트에 enumerate를 적용하면 인덱스와 값을 동시에 얻을 수 있어, 코드가 더 짧아지고 가독성도 높아집니다. 실무에서는 이 방식이 가장 많이 권장됩니다.
예제
listA = [11, 45, 27, 8, 43]
# 주어진 리스트
print("Given list: ", listA)
# 모든 인덱스와 값 출력
print("Index and Values: ")
for index, value in enumerate(listA):
print(index, value)실행 결과
Given list: [11, 45, 27, 8, 43] Index and Values: 0 11 1 45 2 27 3 8 4 43
마무리
특정 값의 위치만 필요하다면 index(), 인덱스와 값을 쌍으로 만들어야 한다면 range() + len(), 단순히 루프를 돌며 인덱스와 값을 함께 처리하고 싶다면 enumerate()를 사용하는 것이 좋습니다. 상황에 맞는 방법을 선택하면 더 깔끔하고 효율적인 파이썬 코드를 작성할 수 있습니다.