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. 컴프리핸선 사용 시 장단점
- 장점: 코드가 간결고 자료형을 만드는 과정이 한 눈에 들어온다, 실행속도가 더 빨라질 수 있다.
- 단점: 코드의 가독성이 낮아질 수 있다.
→ 적절히 사용하면 좋을 것 같다
'Today I Learned' 카테고리의 다른 글
[내일배움캠프_데이터분석] 5주차 월요일 TIL _ EDA분석, 결측치 (0) | 2024.07.22 |
---|---|
[내일배움캠프_데이터분석] 4주차 금요일 TIL _ pandas (0) | 2024.07.19 |
[내일배움캠프_데이터분석] 4주차 수요일 TIL _ 데이터 타입간 변경 (0) | 2024.07.17 |
[내일배움캠프_데이터분석] 4주차 화요일 TIL _ INSTR(), CONCAT_WS () (0) | 2024.07.16 |
[내일배움캠프_데이터분석] 4주차 월요일 TIL _ DBMS (0) | 2024.07.15 |