2. 시퀀스

 

Remarks

이 글은 전문가를 위한 파이썬(Fluent Python)을 정리한 자료입니다.


2. 시퀀스

ABC 언어
초보자를 위한 프로그래밍 환경을 개발하기 위한 연구 프로젝트

  1. 파이썬은 시퀀스를 단일하게 처리하는 ABC의 특징을 물려받았다.

2.1 내장 시퀀스 개요

  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 지능형 리스트와 제너레이터 표현식

  1. list comprehension: 지능형 리스트 (listcomp)
  2. generator expression: 제너레이터 표현식 (genexp)
  3. 생성된 리스트를 사용하지 않을 거라면 지능형 리스트 구문을 사용하지 말아야 한다.
    • 메모리 낭비를 방지
  4. 파이썬에서는 [], {}, () 안에서의 개행이 무시된다.
  5. map(), filter() 를 사용하는 대신 listcomp를 선호

2.2.4 제너레이터 표현식

  1. 반복자 프로토콜(iterator protocol)을 이용하여 항목을 하나씩 생성하여 메모리를 더 적게 사용한다.
  2. 제너레이터 표현식은 한 번에 한 항목을 생성할 수 있도록 for 루프에 데이터를 전달한다.
    • 불필요한 메모리 누수를 방지