1. enumerate() 함수 정의
파이썬의 enumerate() 함수는 반복 가능한(iterable) 리스트, 문자열 등을 입력으로 받아, 각 요소를 인덱스와 함께 반환하는 열거 객체를 생성합니다. 각 요소에 대해 순차적으로 인덱스를 부여하여, for문(루프) 처리 시 요소의 위치 정보를 함께 처리할 수 있게 도와줍니다.
2. enumerate() 함수의 장점
- 가독성 향상: enumerate()를 사용하면, 요소와 인덱스를 동시에 얻을 수 있어 코드의 명확성이 높아집니다.
- 효율적인 루프 처리: 인덱스와 요소를 동시에 사용해야 할 경우, 코드를 간결하게 작성할 수 있습니다.
- 직관적인 로직 구현: 데이터의 순서와 값을 동시에 고려해야 하는 상황에서 유용합니다.
- 유연성: 시작 인덱스를 조정할 수 있는 두 번째 매개변수를 제공합니다.
3. enumerate() 함수 예시
3.1 예시 1 - 리스트의 요소와 인덱스 출력
Python
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 - 시작 인덱스 조정
Python
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 - 사용자 입력 리스트와 인덱스 출력
Python
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 - 인덱스를 사용한 조건부 출력
Python
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 - 데이터 튜플 리스트의 인덱스 사용
Python
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문
Python
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()
Python
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() 함수