파이썬/파이썬(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

     

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