리스트 컴프리헨션은 리스트 축약, 리스트 표현식 등으로 불리기도 한다.
리스트 컴프리헨션은 리스트를 쉽고 짧게 한 줄로 만들 수 있는 파이썬의 문법이다.
리스트 외에도 set, tuple, dict도 가능하다.
lst = [(변수를 활용한 값) for (사용할 변수 이릅) in (순회할 수 있는 값)]
world = '가나다' print([c*2 for c in world]) #['가가', '나나', '다다']
리스트 컴프리헨션에 조건문을 활용할 수 있다.
기본 문법의 끝에 if문만 추가하면 된다.
ar = [n for n in range(1,11) if n %2 == 0]
# [2, 4, 6, 8, 10]
b = [n for n in range(1, 11) if n!=3 and n!= 5] print(b) #[1, 2, 4, 6, 7, 8, 9, 10]
c = [n for n in range(1, 11) if n!=3 if n!= 5] print(c) # [1, 2, 4, 6, 7, 8, 9, 10]
d = [n for n in range(1, 11) if n!=3 or n!= 5] print(d) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
e = [n for n in range(1, 11) if n!=3 or if n!= 5] print(e) """ File "<ipython-input-7-d01fc1deb594>", line 1 e = [n for n in range(1, 11) if n!=3 or if n!= 5] ^ SyntaxError: invalid syntax """
마지막 예시는 에러가 발생하는 경우이다.
다중 리스트의 값을 순환추출하여 리스트를 생성하는 컴프리헨션을 만들어 보자.
f = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] g = [n for row in f for n in row] print(g) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
3X3 행렬 구조인 리스트 f의 요소들을 순차적으로 추출하여 구조를 변형한 예시이다.
h = [[n for n in row] for row in f] print(h) # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
구조를 유지하기 위해 f에서 추출한 각 row를 [ ] 구조에 담아준다. 다시 이 리스트 구조에서, row에서 각각 추출하여 담아준다.