목차
파이썬에서 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
데이터 교육, 코딩 교육, 소프트웨어 교육, 컴퓨터 교육, 데이터 사이언스 교육
'파이썬 > 파이썬(python) 중급' 카테고리의 다른 글
map, pandas, pyplot, matplotlib, code (0) | 2023.05.05 |
---|---|
pycharm에 tensorflow, keras 설치하기, msvcp140.dll or msvcp140_1.dll 에러, 시스템 운영체제 확인 (0) | 2023.03.11 |
*args 인자가 있는 데코레이터 함수 실습하기 (0) | 2022.11.10 |
클래스, 데코레이터 함수, *args, **kwargs (0) | 2022.11.10 |
데코레이터, 일급 객체, 중첩함수, 데코레이터 함수 만드는 방법 (0) | 2022.11.02 |