지능형 리스트는 두 개 이상의 반복 가능한 자료형의 데카르트 곱을 나타내는 일련의 리스트를 만들 수 있다. 데카르트 곱 안에 들어 있는 각 항목은 입력으로 받은 반복 가능한 데이터의 각 요소에서 만들어진 튜플로 구성된다. 생성된 리스트의 길이는 입력으로 받은 반복 가능한 데이터의 길이와 동일하다.
예를 들어 두가지 색상과 세 가지 크기의 티셔츠 리스트를 만드는 경우를 생각해보자. 지능형 리스트를 이용해서 생성하는 방법은 아래와 같다. 결국 여섯 개의 항목이 만들어진다.
# 1. color 다음에 size를 배치해서 만든 튜플 리스트를 생성한다.
colors = ['black', 'white']
sizes = ['S', 'M', 'L']
tshirts = [(color, size) for color in colors for size in sizes]
print(tshirts)
# 2. color를 반복하는 루프 안에서 sizes를 반복해서 튜플 리스트를 출력한다.
for color in colors:
for size in sizes:
print((color, size))
# 3. 먼저 size를 반복하고 그 안에서 color로 반복하려면 for 문의 순서만 바꾸면 된다.
# 지능형 리스트 안에서 줄을 바꾸면 생성될 리스트가 어떻게 정렬될지 알아보기 더 쉽다.
tshirts = [(color, size) for size in sizes
for color in colors]
print(tshirts)
지능형 리스트는 오로지 한 가지 기술만 아는 재주꾼이다. 단지 리스트를 만들 뿐이다. 다른 종류의 시퀀스를 채우려면 제너레이터 표현식을 사용해야 한다. 다음 절에서는 리스트 이외의 시퀀스를 생성하기 위한 제너레이터 표현식을 간단히 살쳐보자.