본문 바로가기
Python/python

파이썬 enumerate() 함수를 활용하여 리스트 순회 처리하기

by SANCODE 2023. 10. 22.

오늘은 파이썬 enumerate() 함수에 대한 내용을 주제로 포스팅하려고 합니다. 이 함수는 파이썬 프로그래밍에서 중요한 역할을 하는데요, 파이썬의 순회 가능한(iterable) 객체를 다룰 때 유용하게 활용됩니다. enumerate() 함수를 통해 우리는 순회 중인 요소의 인덱스와 값을 동시에 처리하는 방법을 알아보도록 하겠습니다.



목차


    enumerate() 함수란?

    파이썬의 enumerate() 함수는 주어진 순회 가능한(iterable) 객체(리스트, 튜플, 문자열 등)를 순회하면서 각 요소의 인덱스와 값을 함께 반환하는 함수입니다. 이 함수는 순회 중인 요소의 인덱스를 추적하거나 순회 중에 요소의 위치를 파악하는 데 유용하며, 주로 for 반복문과 함께 사용됩니다.


    함수의 기본 구문

    enumerate(iterable, start=0)

    • iterable
      순회 가능한 객체(리스트, 튜플, 문자열 등).
    • start (옵션)
      인덱스의 시작값을 지정하는 매개변수로, 기본값은 0입니다.

    enumerate() 함수는 iterable 객체의 각 요소와 해당 요소의 인덱스를 튜플 형태로 반환합니다. 이러한 반환 값은 주로 for 반복문에서 사용되며, 다음과 같은 형태로 활용됩니다.

    for index, value in enumerate(iterable):
        # 코드 작성

    위와 같이 enumerate() 함수를 활용하면 순회 중인 요소의 인덱스와 값을 동시에 사용할 수 있으며, 이는 다양한 작업에 유용하게 활용됩니다.



    enumerate() 함수의 시작 인덱스 설정

    enumerate() 함수를 사용할 때 시작 인덱스를 설정하려면 start 매개변수를 활용하면 됩니다. start 매개변수는 인덱스의 시작값을 지정하는데 사용되며, 기본값은 0입니다.



    예시 코드
    my_list = ['apple', 'banana', 'cherry']
    
    # 시작 인덱스를 1로 설정
    for index, value in enumerate(my_list, start=1):
        print(f'Index {index}: {value}')

    위의 코드에서는 enumerate() 함수에 start=1을 설정하여 인덱스의 시작 값을 1로 지정했습니다.



    실행 결과

    Index 1: apple
    Index 2: banana
    Index 3: cherry


    이렇게 시작 인덱스를 설정하면 원하는 범위의 인덱스를 사용하여 순회할 수 있으며, 종종 인덱스가 0부터 시작하지 않아야 하는 상황에서 유용하게 활용됩니다.



    enumerate() 함수의 활용 예제



    리스트 요소와 인덱스 출력하기

    fruits = ['apple', 'banana', 'cherry']
    for index, fruit in enumerate(fruits):
        print(f'Index {index}: {fruit}')

    위의 소스 코드는 enumerate()함수를 사용하여 리스트 fruits를 순회하면서 각 요소와 해당 요소의 인덱스를 반환합니다.


    리스트에서 특정 값의 인덱스 찾기

    fruits = ['apple', 'banana', 'cherry']
    target = 'banana'
    for index, fruit in enumerate(fruits):
        if fruit == target:
            print(f'{target} found at index {index}')

    위의 소스 코드는 enumerate()함수를 사용하여 리스트 fruits를 순회하면서 target 값과 일치하는 요소를 찾습니다. 발견하면 해당 요소의 인덱스를 출력합니다.


    문자열에서 단어와 인덱스 출력하기

    text = "Python is a powerful programming language."
    words = text.split()
    for index, word in enumerate(words):
        print(f'Word "{word}" found at index {index}')

    위의 소스 코드는 문자열 text를 공백으로 나눈 후, enumerate() 함수를 사용하여 단어 리스트를 순회하면서 각 단어와 해당 단어의 인덱스를 반환합니다.


    리스트에서 특정 범위의 요소 인덱싱

    numbers = [10, 20, 30, 40, 50]
    start_index = 2
    end_index = 4
    for index, value in enumerate(numbers[start_index:end_index + 1], start=start_index):
        print(f'Index {index}: {value}')

    위의 소스 코드는 enumerate()함수를 사용하여 리스트 numbers의 일부를 순회하면서 해당 범위 내의 요소와 인덱스를 반환합니다.


    열거된 항목에 조건 적용하기

    grades = [85, 92, 78, 95, 88]
    passing_score = 90
    for index, score in enumerate(grades):
        if score >= passing_score:
            print(f'Student {index + 1} passed with a score of {score}')

    위의 소스 코드는 enumerate()함수를 사용하여 grades 리스트를 순회하면서 학생의 성적이 passing_score 이상인 경우 해당 학생의 인덱스와 성적을 출력합니다.


    enumerate()함수는 다양한 상황에서 인덱스와 값을 함께 다루는 데 유용하며, 위의 예제들은 그중 일부에 불과합니다. 이 함수를 적절히 활용하면 더 다양한 작업을 수행할 수 있습니다.



    반응형


    enumerate() 함수 사용시 주의사항


    시작 인덱스 지정

    enumerate() 함수의 두 번째 매개변수 start를 활용하여 인덱스의 시작값을 지정할 수 있습니다. 기본값은 0이며, 필요에 따라 시작 인덱스를 변경할 수 있습니다.


    복사된 객체 사용

    enumerate()함수는 순회 가능한(iterable) 객체를 변경하지 않습니다. 그러므로 객체를 변경하고자 할 때는 별도로 새로운 리스트나 컨테이너에 결과를 저장해야 합니다.


    인덱스와 값의 순서

    enumerate() 함수는 인덱스와 값의 순서로 결과를 반환합니다. 따라서 for 루프에서 먼저 인덱스 변수, 그 다음 값 변수를 사용해야 합니다.


    enumerate() 객체 변환

    enumerate() 함수의 결과는 enumerate 객체로 반환됩니다. 필요에 따라 리스트나 튜플 등으로 변환하여 사용할 수 있습니다.


    메모리 사용

    큰 데이터셋을 다룰 때 enumerate() 함수를 사용하면 추가적인 메모리를 사용할 수 있으므로 주의가 필요합니다.

    enumerate()함수는 파이썬에서 순회 가능한 객체를 다룰 때 유용한 도구이지만, 위의 주의사항을 염두에 두고 사용해야 합니다.



    마무리

    오늘은 파이썬 enumerate() 함수에 대해 정리해 보았습니다. enumerate() 함수는 순회 가능한 객체를 다룰 때 인덱스와 값을 함께 처리할 수 있어 매우 유용합니다. 이 함수를 활용하면 반복 작업을 더욱 효율적으로 수행할 수 있으며, 다양한 상황에서 활용할 수 있는 여러 기능을 제공합니다.





    반응형