[Q] iterable이란?

julian·2025년 2월 18일

python

목록 보기
10/74
post-thumbnail

1. iterable

iterable을 직역하면 반복할 수 있는이라는 뜻을 가지며,
이는 즉 반복할 수 있는 객체를 의미한다.
하지만 사실 쉽게 말해, 요소를 하나씩 꺼낼 수 있는 자료 구조들iterable이라고한다.
즉 요소에 접근할 수 있는 str, list, tuple 등 다양한 자료형이 iterable이다.
이들은 모두 반복문을 통해 요소에 하나씩 접근하고 반복할 수 있다.

1.1. mutableimmutable

그런데 요소에 하나씩 접근할 수 있는 자료 구조들이라고 하면, tuple을 생각하면서 'tuple의 값은 수정이 불가능 하지 않나?' 라는 생각을 할 수 있다.

내가 그랬다 🤣

하지만 iterable에 대해서 이야기할 때, 수정이 가능한지는 전혀 중요하지 않다.

중요한 점은 반복할 수 있는지이다.

iterable수정 가능(mutable) 하거나 수정 불가능(immutable) 할 수 있으며, 반복이 가능하다면 어떤 자료형이라도 iterable로 간주된다.

1.1.1. mutable

list와 같은 자료형은 mutable이다. 즉, 요소를 변경할 수 있다.

my_list = [1,2,3]
my_list[0] = 10  
print(my_list)  # [10, 2, 3]
10, 2, 3

1.1.2. immutable

tuple과 같은 자료형은 immutable이다. 즉, 요소를 변경할 수 없다.

my_tuple = (1,2,3)
my_tuple[0] = 10  # 에러발생
TypeError: 'tuple' object does not support item assignment

하지만 튜플은 반복할 수 있다.

my_tuple = (1,2,3)
sum = 0
for i in my_tuple:
    sum += i
print(sum)
6

따라서 iterable은 수정이 가능한지와는 상관없이 반복할 수 있는 자료형을 말한다.

1.2. iterator

iterable과 관련된 개념 중 핵심 내용으로 iterator이 있다.
iteratoriterable의 요소를 하나씩 꺼내는 역할을 한다.

1.2.1. iter()

iter() 함수는 iterableiterator 변환하는 함수다.
iterator로 변환 후, next() 함수를 사용해서 iterable의 요소를 하나씩 꺼낼 수 있다.

my_list = [1,2,3]
my_iter = iter(my_list)

print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
1
2
3

만약 여기서 print(next(my_iter))를 실행했을 때 접근할 요소 없으면 StopIteration 에러가 발생한다.

단, 여기서 첫 요소부터 시작한다고 생각하여 첫 print()문에 next()를 호출하지 않으면 안된다. next()를 호출하지 않으면 iterator는 시작 지점에서 멈춰있는상태로 요소를 읽지 않는다.


⭐ 결론

  • iterable반복할 수 있는 객체를 의미하며, 이를 통해 각 요소를 하나씩 처리할 수 있다.

  • iterable은 수정이 가능한지와는 상관없이, 반복 가능, 요소에 하나씩 접근이 가능한 자료형이면 모두 포함된다.

  • iteratoriterable을 하나씩 꺼낼 수 있도록 해주는 도구다.

profile
AI Model Developer

0개의 댓글