map()과 filter() 함수를 이용해서 수행할 수 있는 작업은 기능적으로 문제가 있는 파이썬 람다를 억지로 끼워 넣지 않고도 지능형 리스트를 이용해서 모두 구현할 수 있다.
symbols = '#$%^'
# 1. 지능형 리스트
beyond_ascii = [ord(s) for s in symbols if ord(s) > 10]
print(beyond_ascii)
# 2. 맵/필터 구성으로 만든 동일 리스트
beyond_ascii = list(filter(lambda c: c > 10, map(ord, symbols)))
print(beyond_ascii)
필자는 map()/filter()를 조합한 방법이 지능형 리스트보다 빠르다고 생각하고 있었지만, 알렉스 마르텔리의 지적에 따라 그렇지 않다는 것을 알게 되었다. 이제 지능형 리스트를 이용해서 데카르트 곱을 계산해보자. 데카르트 곱은 두 개 이상의 리스트에 있는 모든 항목을 이용해서 만든 튜플로 구성된 리스트이다.