A. 금일 학습 내용

- 컴프리핸선 (Comprehension) 

      사전적 정의: 명사_ 이해력

        * Comprehensive : 형용사_ 포괄적인, 종합적인

- 자료형에 사용되며, 조건문 혹은 반복문 등을 이용하여 작성한다

- 자료형: List, Set, Dict

- 한 줄 코드를 작성할 때 많이 사용하는 것으로 보인다.

[실행문 for i in range(1,n) 조건문]

- 대략 위와 같은 형태로, 어떤 값을 출력할 것인가에 대해 내부 함수가 변한다.

 

B. 리스트 컴프리핸선 작성

# 기존 방식
numbers = [1, 2, 3, 4, 5]
squared_numbers = []
for number in numbers:
    squared_numbers.append(number ** 2)

print(squared_numbers)  # [1, 4, 9, 16, 25]

- for 문을 활용하여 squared_numbers 리스트에 numbers 값에 제곱한 값을 넣는 코드이다.

 

◆ 파이썬 컴프리핸선 사용

# 리스트 컴프리핸션 사용
numbers = [1, 2, 3, 4, 5]
squared_numbers = [number ** 2 for number in numbers]

print(squared_numbers)  # [1, 4, 9, 16, 25]

- number의 제곱을 구하고자 한다.

- for문을 사용하여 새로운 squared_numbers에 할당하고자 한다.

 

◇ 리스트 컴프리핸선 이해하기

- 리스트의 경우, [ ] (대괄호) 를 이용한다.

- 코드를 그대로 해석하자면 아래와 같다.

squared_numbers 리스트에 number^2 한 값을 넣어. for number in numbers 로 number 변수 할당해.

 

C. 딕셔너리 컴프리핸선 사용

- 리스트와 같은 결과를 내고자 한다.

# 기존 방식
numbers = [1, 2, 3, 4, 5]
squared_dict = {}
for number in numbers:
    squared_dict[number] = number ** 2

print(squared_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

 

◆ 파이썬 컴프리핸선 사용

# 딕셔너리 컴프리핸션 사용
numbers = [1, 2, 3, 4, 5]
squared_dict = {number: number ** 2 for number in numbers}

print(squared_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

 

◇ 리스트 컴프리핸선 이해하기

- 딕셔너리의 경우 { } (중괄호)를 사용한다.

- key 값과 value값을 지정하여야 한다.

 

D. for 조건문 외 사용

# 기존 방식
numbers = [1, 2, 3, 4, 5]
even_list = [ ]
for number in numbers:
    if number%2 ==0:
        even_list.append(number)

print(even_list)  # [2,4]

- numbers 리스트에서 짝수를 구해야 한다.

 

◆ 파이썬 컴프리핸선 사용

numbers = [1, 2, 3, 4, 5]
even_list = [number for number in numbers if number%2==0]
print(even_list)  # [2,4]

- 위에서 다룬 것과 동일하게 해석하면 된다.

- 다른 점은 for문 뒤에 if 문이 붙었다는 것이다.

- 해석하면 아래와 같다.

even_list 리스트에 number을 넣어.
for number in numbers 로 할당 받은 number가 2로 나누었을 때 나머지가 0일 때만 말야.

 

E. 컴프리핸선 사용 시 장단점

- 장점: 코드가 간결고 자료형을 만드는 과정이 한 눈에 들어온다, 실행속도가 더 빨라질 수 있다.

- 단점: 코드의 가독성이 낮아질 수 있다.

 

→ 적절히 사용하면 좋을 것 같다

+ Recent posts