컴프리헨션(Comprehension) 문법

Suhyeon Lee·2024년 10월 25일
0

컴프리헨션(Comprehension)

  • 파이썬의 자료구조(list, dictionary, set)에 데이터를 좀 더 쉽고 간결하게 담기 위한 문법

    • '쉽고 간결하게' 데이터를 담는 방법 == 반복문과 조건문을 결합하여 하나의 문법으로 만들어 담음
  • 컴프리헨션 문법의 진가는 if문과 중첩 for문을 사용할 수 있다는 것에 있음

리스트 컴프리헨션(List Comprehension)

  • 리스트에 순차적으로 1부터 10까지의 값을 저장하고 싶을 때 어떻게 해야 할까?

1. 빈 리스트를 만들고 append 함수로 하나씩 추가

  • 가장 단순한 방법
  • 저장해야 하는 데이터의 수가 늘어날수록 비효율적!
data = []
data.append(1)
data.append(2)
…
data.append(9)
data.append(10)

2. for문과 range 함수 사용

data = []
for i in range(1, 11):
    data.append(i)

3. list 함수 사용

data = list(range(1,11))

4. 리스트 컴프리헨션 ★

data = [i for i in range(1, 11)]
  • 첫 번째 i는 리스트에 저장되는 값이고 두 번째 i는 for문의 일부임

🡆 위의 리스트에서 짝수 값만 저장하고 싶다면?

일반 for문

data = []
for i in range(1, 11):
    if i % 2 == 0:
        data.append(i)

리스트 컴프리헨션

→ 단 1줄로 표현 가능

data = [i for i in range(1,11) if i%2 == 0]
  • for문 뒤에 if문을 추가하기만 하면 됨
    (단, 변수명은 동일하게 사용)
  • if문 중첩도 가능
data = [i for i in range(1, 11) if i%2 == 0 if i < 5]

→ 1부터 10까지의 숫자 중 5보다 작은 짝수를 리스트에 저장

추가: 컴프리헨션의 for문 중첩

data = [(x, y) for x in range(1, 6) for y in range(1, 4)]

# for문과 비교해봅시다.
data2 = []
for i in range(1, 6):
    for j in range(1, 4):
        data2.append((i, j))

# 출력결과
[(1, 1), (1, 2), (1, 3), 
(2, 1), (2, 2), (2, 3), 
(3, 1), (3, 2), (3, 3), 
(4, 1), (4, 2), (4, 3), 
(5, 1), (5, 2), (5, 3)]

data = [(x, y) for x in range(1, 4) for y in range(1, 4) if x % 2 == 1 if y > 1]

# 출력결과
[(1, 2), (1, 3), (3, 2), (3, 3)]

딕셔너리 컴프리헨션(Dictionary Comprehension)

https://tibetsandfox.tistory.com/25 읽고 내용 정리

profile
2 B R 0 2 B

0개의 댓글