반응형

파이썬에서 iterable(참고)은 반복 가능한 모든 객체를 의미하며, 한 번에 하나씩 요소를 리턴할 수 있는 객체이다.

반면 sequence 자료형(짧게는 sequence)는 iterable의 하위 개념으로, 정수 인덱스로 개별 요소에 접근할 수 있는, 순서가 있는 자료형이다.

 

주요 차이점

1. 접근 방식

Sequence 자료형: indexing과 slicing이 가능하다.

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

Iterable: 반드시 indexing이 가능하지는 않다. 이런 경우 slicing도 불가능하다.

my_set = {1, 2, 3}
print(my_set[0])
TypeError: 'set' object is not subscriptable

 

2. 순서 보장 여부

Sequence 자료형: 요소의 순서가 항상 보장된다.

Iterable: 순서를 보장하지 않을 수도 있다 (ex: set, frozenset, 파이썬 3.6 이전 dict, generator(generator 구현은 순서 보장을 강제하지 않음))

 

3. 사례

Sequence 자료형: list,tuple, str, range 등

Iterable: sequence 자료형, set, dict, generator 등

 

결론

모든 sequence 자료형은 iterable이지만, 모든 iterable이 sequence 자료형은 아니다.

특성 Iterable Sequence
순서 보장 여부 순서를 보장하지 않을 수 있음 순서를 항상 보장함
Indexing 가능 여부 지원하지 않을 수 있음 (set 등) index를 통해 요소에 접근 가능
Slicing 지원 지원하지 않을 수 있음 slicing 지원
예시 set, dict, list, generator 등 list, tuple, str, range 등
반응형

+ Recent posts