python을 python답게 코딩할 수 있는 comprehension을 자주 사용하면 좋겠죠?
이번 포스팅에서는 간단하게 Comprehension을 사용하는 팁에 대해서 알아보겠습니다.
1) 다수의 생성식 활용 : 아래와 같이 여러 변수에 대해서 comprehension을 적용할 수 있습니다. 이 때에는 앞에 있는 "생성식"이 더 상위루프로 간주됩니다.
r = ((y, x) for y in range(3) if not y%2 for x in range(3) if x%2)
2) 다차원 container 생성 : 아래 코드에서 이중 리스트를 만드는 예시처럼 comprehension을 활용하면 다차원 container를 만들 수 있습니다.
tt=[[1,2] for i in range(2)]
print(tt) #[[1, 2], [1, 2]]
3) 조건절에서 if/else 사용하는 경우: 사실 저도 종종 헷갈리는 syntax입니다. [조건만족시출력내용 if 조건 else 조건불만족시출력내용 for루프] 의 syntax를 적어주시면 됩니다. 예시로 보시는 것이 더 간단할 것 같습니다.
[i**2 if i % 2 == 0 else i*3 for i in range(10)]
Dictionary에서도 마찬가지로 Comprehension을 사용할 수 있습니다.
data = {'a': 1, 'b': 2, 'c': 1, 'd': 3}
# 값이 1인 딕셔너리만 추출
filtered = {k: v for k, v in data.items() if v == 1}
print(filtered) # {'a': 1, 'c': 1}
[{k: v} for k, v in data.items() if v == 1] # 아님 주의 comprehension으로 그냥 ,만 생략. 나머지는 원래 데이터타입과 동일
그냥 key, value 튜플 쌍으로 가져오고 싶으면 아래처럼 해도 됩니다.
filtered_list = [(k, v) for k, v in data.items() if v == 1]
print(filtered_list) # [('a', 1), ('c', 1)]
특히 이 경우는 filtered = dict(filtered_list) 명령어로 다시 Dictionary로 돌릴 수 있습니다.
'프로그래밍 > Python 관련 정보' 카테고리의 다른 글
[Python Programming 기초] 부분 unpacking (3) | 2024.10.22 |
---|---|
[Python Programming 기초] Dictionary (3) | 2024.10.22 |
[Python Programming 기초] Iterator (1) | 2024.10.20 |
[Python Programming 기초] Container (0) | 2024.10.19 |
[Python Programming 기초] Mutable/Immutable (1) | 2024.10.19 |