본문 바로가기

파이썬 enumerate() 함수, for문 차이점

News Letter 2024. 5. 3.

파이썬 쉽게 사용하기
파이썬 쉽게 사용하기

1. enumerate() 함수 정의

파이썬의 enumerate() 함수는 반복 가능한(iterable) 리스트, 문자열 등을 입력으로 받아, 각 요소를 인덱스와 함께 반환하는 열거 객체를 생성합니다. 각 요소에 대해 순차적으로 인덱스를 부여하여, for문(루프) 처리 시 요소의 위치 정보를 함께 처리할 수 있게 도와줍니다.

2. enumerate() 함수의 장점

  • 가독성 향상: enumerate()를 사용하면, 요소와 인덱스를 동시에 얻을 수 있어 코드의 명확성이 높아집니다.
  • 효율적인 루프 처리: 인덱스와 요소를 동시에 사용해야 할 경우, 코드를 간결하게 작성할 수 있습니다.
  • 직관적인 로직 구현: 데이터의 순서와 값을 동시에 고려해야 하는 상황에서 유용합니다.
  • 유연성: 시작 인덱스를 조정할 수 있는 두 번째 매개변수를 제공합니다.

3. enumerate() 함수 예시

3.1 예시 1 - 리스트의 요소와 인덱스 출력

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

Index 0: apple
Index 1: banana
Index 2: cherry

3.2 예시 2 -  시작 인덱스 조정 

colors = ["red", "green", "blue"]
for index, color in enumerate(colors, start=1):
    print(f"Color {index}: {color}")
    
Color 1: red
Color 2: green
Color 3: blue

3.3 예시 3 -  사용자 입력 리스트와 인덱스 출력

inputs = ["input1", "input2", "input3"]
for index, input in enumerate(inputs):
    print(f"Input {index}: {input}")

Input 0: input1
Input 1: input2
Input 2: input3

3.4 예시 4 -  인덱스를 사용한 조건부 출력

numbers = [10, 20, 30, 40, 50]
for index, number in enumerate(numbers):
    if index % 2 == 0:
        print(f"Index {index}는 짝수이고 숫자는 {number} 입니다.")

Index 0는 짝수이고 숫자는 10 입니다.
Index 2는 짝수이고 숫자는 30 입니다.
Index 4는 짝수이고 숫자는 50 입니다.

3.5 예시 5 -  데이터 튜플 리스트의 인덱스 사용

data_list = [("Alice", 25), ("Bob", 30), ("Cathy", 22)]
for index, (name, age) in enumerate(data_list):
    print(f"{name}는 {index}에 있으며 나이는 {age}살 입니다.")

Alice는 0에 있으며 나이는 25살 입니다. 
Bob는 1에 있으며 나이는 30살 입니다.
Cathy는 2에 있으며 나이는 22살 입니다.

 

4. enumerate()와 for문의 차이점

데이터 프레임을 순회할 때 for문만 사용하면 각 행의 데이터에 직접 접근할 수 있지만, enumerate()를 사용하면 각 행의 인덱스와 함께 데이터에 접근할 수 있습니다. 이를 통해 더 명확하게 각 행의 위치를 알 수 있으며, 인덱스를 활용한 추가적인 조작이 가능해집니다.

for문

  • for문은 반복 가능한 객체(리스트, 문자열, 딕셔너리의 키 등)를 순회하며 각 요소에 대해 일련의 작업을 수행합니다. for문 자체는 현재 처리하고 있는 요소의 인덱스를 직접적으로 제공하지 않습니다.

enumerate()

  • enumerate() 함수는 for문과 함께 사용되어 반복 중인 요소의 인덱스와 값을 함께 제공합니다. 이 함수는 반복 중인 요소의 위치 정보가 필요할 때 유용하게 사용됩니다.

4. 1 예시 - for문

import pandas as pd

data = pd.DataFrame({
    '이름': ['Alice', 'Bob', 'Cathy'],
    '나이': [25, 30, 22],
    '도시': ['New York', 'Los Angeles', 'Chicago']
})

for row in data.itertuples():
    print(f"{row.이름}는 {row.나이}살이며, {row.도시}에 삽니다.")

Alice는 25살이며, New York에 삽니다.
Bob는 30살이며, Los Angeles에 삽니다.
Cathy는 22살이며, Chicago에 삽니다.

4. 2 예시 - enumerate()

import pandas as pd

data = pd.DataFrame({
    '이름': ['Alice', 'Bob', 'Cathy'],
    '나이': [25, 30, 22],
    '도시': ['New York', 'Los Angeles', 'Chicago']
})

for index, row in enumerate(data.itertuples(), start=1):
    print(f"{index}번째 사람: {row.이름}는 {row.나이}살이며, {row.도시}에 삽니다.")

1번째 사람: Alice는 25살이며, New York에 삽니다.
2번째 사람: Bob는 30살이며, Los Angeles에 삽니다.
3번째 사람: Cathy는 22살이며, Chicago에 삽니다.

위 예시에서 볼 수 있듯이, for문만 사용하는 경우에는 각 행의 데이터를 출력하지만, enumerate()와 함께 사용할 경우 각 행의 인덱스를 추가로 출력할 수 있습니다. 이는 데이터 처리 과정에서 특정 조건에 따라 행을 선택하거나 추가적인 정보를 제공할 때 매우 유용합니다. 예를 들어, 특정 번째의 데이터만 처리하고 싶거나, 데이터의 순서를 기록하고 싶을 때 enumerate() 함수가 큰 도움이 됩니다.

좀 더 자세하게 알아가고 싶으신 분들은 공식 홈페이지를 참고해 주세요. 공식 홈페이지 enumerate() 함수

 

댓글