🐍/Python
[Python] List Comprehension / Dict Comprehension
eungding
2021. 4. 9. 00:24
728x90
반응형
[1] List Comprehension
PEP 202 -- List Comprehensions
The official home of the Python Programming Language
www.python.org
List Comprehension은 기존 리스트를 기반으로 새로운 리스트를 만들어내는 구문입니다.
예를들어 leading and trailing whitespaces를 지워주는 strip을 리스트의 모든 아이템에 적용하고 싶다면
이렇게 리스트 컴프리헨션을 이용할 수 있습니다.
list = ["죠르디 ", " 라이언 "]
new_list = [item.strip() for item in list]
print(new_list)
// 결과
['죠르디', '라이언']
if문도 곁들여서 쓸 수 있습니다.
짝수인 아이템이라면 2를 곱해 새로운 리스트에 넣어주는 예제입니다
list = [1,2,3,4]
new_list = [item * 2 for item in list if item % 2 == 0]
print(new_list)
// 결과
[4, 8]
참고로 아래처럼 map, filter + 람다 표현식을 쓰는 것보다
리스트 컴프리핸션이 가독성이 더 좋고 더 파이써닉한 방법이라고 합니다 +_+
sample_list = ["죠르디 ", " 라이언 "]
new_list = list(map(lambda item: item.strip(), sample_list))
print(new_list)
// 결과
['죠르디', '라이언']
[2] Dict Comprehension
PEP 274 -- Dict Comprehensions
The official home of the Python Programming Language
www.python.org
Dict Comprehension은 기존 딕셔너리를 기반으로 새로운 딕셔너리를 만들어내는 구문입니다.
나이를 value로 저장하고 있는 dictionary에서
나이를 한 살씩 뺀 새로운 dictionary를 만들고 싶다고 해봅시다.
아래의 예제처럼 for문을 돌릴 수 도 있지만 ( items() 메소드로 딕셔너리의 key, value를 각각 꺼낼 수 있습니다 )
age_dict = {"죠르디": 10, "라이언": 20}
new_age_dict = {}
for key, value in age_dict.items():
new_age_dict[key] = value - 1
print(new_age_dict)
// 결과
{'죠르디': 9, '라이언': 19}
Dict Comprehension을 이용해서 코드 라인을 줄일 수 있습니다.
age_dict = {"죠르디": 10, "라이언": 20}
new_age_dict = { key : value - 1 for key, value in age_dict.items() }
print(new_age_dict)
// 결과
{'죠르디': 9, '라이언': 19}
반응형