Remarks
이 글은 전문가를 위한 파이썬(Fluent Python)을 정리한 자료입니다.
2. 시퀀스
ABC 언어
초보자를 위한 프로그래밍 환경을 개발하기 위한 연구 프로젝트
- 파이썬은 시퀀스를 단일하게 처리하는 ABC의 특징을 물려받았다.
2.1 내장 시퀀스 개요
- 파이썬 표준 라이브러리는 C로 구현된 다음과 같은 시퀀스형을 제공한다.
컨테이너 시퀀스
서로 다른 자료형의 항목들을 담을 수 있는 시퀀스
객체에 대한 참조를 담고 있다.
e.g. list
, tuple
, collections.deque
균일 시퀀스
단 하나의 자료형만 담을 수 있는 시퀀스
자신의 메모리 공간에 각 항목의 값을 직접 담는다.
따라서, 메모리를 더 적게 사용한다.
e.g. str
, bytes
, bytearray
, memoryview
, array.array
가변 시퀀스
항목을 변화시킬 수 있는 시퀀스
e.g. list
, bytearray
, array.array
, collections.deque
, memoryview
불변 시퀀스
항목을 변화시킬 수 없는 시퀀스
e.g. tuple
, str
, bytes
2.2 지능형 리스트와 제너레이터 표현식
- list comprehension: 지능형 리스트 (listcomp)
- generator expression: 제너레이터 표현식 (genexp)
- 생성된 리스트를 사용하지 않을 거라면 지능형 리스트 구문을 사용하지 말아야 한다.
- 메모리 낭비를 방지
- 파이썬에서는
[]
,{}
,()
안에서의 개행이 무시된다. map()
,filter()
를 사용하는 대신 listcomp를 선호
2.2.4 제너레이터 표현식
- 반복자 프로토콜(iterator protocol)을 이용하여 항목을 하나씩 생성하여 메모리를 더 적게 사용한다.
- 제너레이터 표현식은 한 번에 한 항목을 생성할 수 있도록
for
루프에 데이터를 전달한다.- 불필요한 메모리 누수를 방지
PREVIOUSEtc