728x90
반응형
SMALL
프로그래밍은 특정 상황을 해결하는 것
컴프리헨션은 실제 프로그래밍에서 한 줄로 파이썬 기능을 구현할 수 있는 기능
- 코드간소화를 위해 사용되고 직관적이며 속도가 빠름
컴프리헨션 활용시 유의할 점
1. 컴프리헨션 내 여러 조건이 중첩되는 경우 가독성이 떨어진다.
2. 조건문에 따라 컴퓨터에서 사용되는 메모리에 영향을 줄 수 있다.
numbers = [0, 1, 2, 3]
squares = []
for n in numbers:
squares.append(n**2)
print(squares)
# [0, 1, 4, 9]
numbers = [0, 1, 2, 3]
squares = [n**2 for n in numbers]
print(squares)
# [0, 1, 4, 9]
list_1 = [1, 2, 3, 4]
list_2 = [3, 4, 5, 6]
common_num = []
for a in list_1:
for b in list_2:
if a == b:
common_num.append(a)
print(common_num)
# [3, 4]
list_1 = [1, 2, 3, 4]
list_2 = [3, 4, 5, 6]
common_num = [a for a in list_1 for b in list_2 if a == b]
print(common_num)
# [3, 4]
딕셔너리 컴프리헨션
test = {'A': 1, 'B': 3, 'C': 5, 'D':7, 'E':10}
test = {na:test for na, test in test.items() if na != 'E'}
print(test)
# {'A': 1, 'B': 3, 'C': 5, 'D': 7}
반복문 대신 조건을 먼저 쓸 수 있음
if 를 사용하는 경우 else 를 작성
numbers = {'A': 2, 'B': 22, 'C': 6, 'D': 7}
pas = {name: 'PASS' if numbers > 8 else 'NO PASS' for name, numbers in numbers.items()}
print(pas)
# {'A': 'NO PASS', 'B': 'PASS', 'C': 'NO PASS', 'D': 'NO PASS'}
반복문을 연속으로 작성하는 것도 가능
set 는 특성상 중복값을 제외
print('list for loop: ', [n for n in range(1, 3+1) for n in range(1, 3+1)])
print('set for loop: ', {n for n in range(1, 3+1) for n in range(1, 3+1)})
# list for loop: [1, 2, 3, 1, 2, 3, 1, 2, 3]
# set for loop: {1, 2, 3}
두 개의 리스트를 하나의 딕셔너리로 합쳐서 하나는 key, 또 다른 하나는 value 로 사용
subjects = ['A', 'B', 'C', 'D']
scores = [20, 22, 60, 70]
score_dict = {key: value for key, value in zip(subjects, scores)}
print(score_dict)
# {'A': 20, 'B': 22, 'C': 60, 'D': 70}
튜플 리스트를 딕셔너리 형태로 변환
score_tuples = [('A', 55), ('B', 53), ('C', 17), ('D', 33)]
score_dict = {t[0]: t[1] for t in score_tuples}
print(score_dict)
# {'A': 55, 'B': 53, 'C': 17, 'D': 33}
728x90
반응형
LIST
'IT' 카테고리의 다른 글
백준 파이썬 2557 - Hello World (0) | 2022.06.20 |
---|---|
데이터 모델 이해 (0) | 2022.06.19 |
오라클 환경 세팅 방법 (0) | 2022.06.17 |
파이썬 프로그래밍 (0) | 2022.06.16 |
컴퓨터 공학과 머신러닝 (0) | 2022.06.15 |