[Python] List Comprehension

도갱도갱·2022년 1월 10일
0

Python

목록 보기
17/34

List Comprehension

리스트 컴프리헨션은 리스트 축약, 리스트 표현식 등으로 불리기도 한다.
리스트 컴프리헨션은 리스트를 쉽고 짧게 한 줄로 만들 수 있는 파이썬의 문법이다.
리스트 외에도 set, tuple, dict도 가능하다.

기본적인 문법

lst = [(변수를 활용한 값) for (사용할 변수 이릅) in (순회할 수 있는 값)]
world = '가나다'
print([c*2 for c in world])
#['가가', '나나', '다다']

if문을 활용

리스트 컴프리헨션에 조건문을 활용할 수 있다.
기본 문법의 끝에 if문만 추가하면 된다.

ar = [n for n in range(1,11) if n %2 == 0]
# [2, 4, 6, 8, 10]

다중 if문 사용 방법

  • AND 규칙
    하나의 if문에 and를 명시하거나 if문을 2번 작성
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]
  • OR 규칙
    하나의 if문에 OR을 명시하는 것만 가능
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에서 각각 추출하여 담아준다.

참고

0개의 댓글