파이썬/파이썬(python) 중급

iterator, enumerate, iterrows, zip, iter, next

Olivia-BlackCherry 2023. 5. 31. 16:22

목차

 

파이썬에서 iterator이터레이터는 반복가능한 iterable한 객체에 순차적으로 요소를 반환하는 객체이다. 

iterator은 반복 가능한 객체의 요소를 차례대로 가져오면서 메모리를 절약할 수 있다. 

대규모 데이터, 무한 데이터 스트림과 같이 모든 요소를 한 번에 로딩하지 않고, 필요할 때마다 요소를 생성하고 반환하기 때문이다. 

 

파이썬에서 자주 쓰이는 함수 3개를 이야기해보자.

iterrows

판다스 데이터프레임에서 각 행을 반복문을 사용하여 출력하는 방법이다.

import pandas as pd

# 예시 DataFrame 생성
data = {'Name': ['John', 'Emily', 'Ryan'],
        'Age': [25, 30, 35],
        'City': ['New York', 'Paris', 'London']}
df = pd.DataFrame(data)

# 각 행 출력
for index, row in df.iterrows():
    print(f"Row {index+1}:")
    print(f"Name: {row['Name']}")
    print(f"Age: {row['Age']}")
    print(f"City: {row['City']}")
    print()

>>Row 1:
Name: John
Age: 25
City: New York

Row 2:
Name: Emily
Age: 30
City: Paris

Row 3:
Name: Ryan
Age: 35
City: London

 

 

zip()

zip함수는 여러 개의 iterable 객체를 묶어서 각각의 iterable 객체에서 하나씩 원소를 가져와, tuple로 묶은 iterator를 생성한다. 

numbers = [1, 2, 3, 4, 5]
letters = ['a', 'b', 'c', 'd', 'e']

for item in zip(numbers, letters):
    print(item)

>>(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
(5, 'e')

 

 

 

iter()

데이터들을 iter함수를 써서 iterator 객체로 반환 가능하다. 

my_iterator = iter(range(1, 5))

print(next(my_iterator))  # 1
print(next(my_iterator))  # 2
print(next(my_iterator))  # 3
print(next(my_iterator))  # 4
print(next(my_iterator))  # StopIteration 예외 발생

 

 

next()

iterator 객체에서 다음 요소를 반환한다.

객체에서 더이상 요소가 없을 경우 반환할 기본값은 None이다.

만약 내가 원하는 문구가 있을 경우 따로 입력해도 된다.

next(iterator, "문구")

my_list = [1, 2, 3, 4, 5]
my_iterator = iter(my_list)

print(next(my_iterator))  # 1
print(next(my_iterator))  # 2
print(next(my_iterator))  # 3
print(next(my_iterator))  # 4
print(next(my_iterator))  # 5
print(next(my_iterator, "End"))  # "End": 더 이상 요소가 없을 때 기본값으로 사용됨

 

enumerate

iterable 객체를 받아 인덱스와 해당 요소를 반환하는 iterator을 생성한다. 각 요소에 대해 인덱스를 포함한 값을 튜플로 반환하여 반복 작업을 보다 쉽게 하도록 돕는다. 

시작값을 지정할 수도 있다.

enumerate(iterable, start=0)
fruits = ['apple', 'banana', 'orange']

for index, fruit in enumerate(fruits):
    print(index, fruit)

>>0 apple
1 banana
2 orange

 

데이터 교육, 코딩 교육, 소프트웨어 교육, 컴퓨터 교육, 데이터 사이언스 교육