본문 바로가기
PL (Programming Language)/Python

[Python] 파이썬 for문의 iterable 속성을 통한 순회 (list, tuple, dictionary 등)

by jangThang 2022. 4. 18.
반응형

 반복문 for문에 대해서 알아봅니다. 파이썬의 for문은 단순한 반복문보다는, 객체 내 원소를 하나하나 순회하는 구문입니다. 이러한 특성을 가진 for문의 예시까지 살펴보겠습니다.

 

[ Contents ]

     

     

    1. 반복문 For

    for 변수 in 순회 가능한 객체:
       반복할 행위

     for문은 여러 값이 저장된 자료형에서 하나씩 꺼내 변수에 넣고, 반복 수행하는 제어문입니다.

     

     C/C++/Java와 같은 전통적인 언어와 달리, for문은 정수 인덱스로 반복 횟수를 정하지 않습니다. 객체의 요소 개수에 따라, 반복 횟수가 정해집니다. 객체 내 원소를 다 꺼낼 때까지 반복하죠.

     

     

    for i in range(N): N번 반복문을 수행

     그렇기에 반복 횟수만을 지정하려면, range() 함수를 이용해야 합니다.

     

     

    range(start, end, step): start부터 end까지 step씩 증가하는 수열을 반환

     start와 step은 생략가능하며, start의 기본값은 0이고 step의 기본값은 1입니다.

     

     

     range 함수를 이용하면, 원하는 횟수만큼 반복할 수 있습니다.

     

     

     

    2. list, tuple, set, dictionary

     순회가능한 객체는 모두 for문에 쓰일 수 있습니다. 파이썬의 4가지 기본 자료형인 list, tuple, set, dictionary 모두 가능합니다. for문에서 직접 객체를 순회할 수 있으므로, 굳이 인덱스로 접근할 필요가 없습니다.

     

     

     종종 이렇게 인덱스로 접근하시는 분들이 계신데, 이는 파이썬의 철칙에 어긋나는 코드 스타일입니다.

     

     

     

    3. Iterable 이란?

     그 외에도 map, 문자열 등 여러 데이터들을 갖고 있는 자료형은 모두 for문에 사용될 수 있습니다. 그 이유는 for문이 객체를 iterable하게 만들기 때문입니다. 

     

    iterable: '순회 가능한'이라는 뜻으로, 순서대로 내부 요소를 하나씩 꺼낼 수 있는 객체를 뜻함

     여기서 중요한 점은 '순서'입니다. set과 dictionary와 같은 자료형은 순서가 없습니다. 따라서 iteration(순회)를 할 수 없습니다. 어떤 순서로 꺼내야 할지 모르니까요. (컬렉션 타입으로, 인덱스 접근이 불가능한 자료형)

     

     

     그래서 for문 내에서는 __iter__() 메서드로 우선 객체를 iterator로 만들고, __next__() 메서드를 이용해서 순서대로 순회합니다. 그 덕분에 set 자료형도 오름차순으로 순회하고, dictionary 같은 자료형도 생성된 순서대로 순회할 수 있습니다.

     

    star가 되고나서 Tistory

    반응형

    댓글