본문 바로가기
Programming/Python

[Python] List Comprehension

by Foxy현 2022. 11. 23.
728x90
반응형
mat = [[1,2,3],[4,5,6],[7,8,9]]
new = [x for a in mat for x in a]
print(new)

안녕하세요!

이번 글에서는 파이썬에서 한 리스트에서 다른 리스트를 만들어내는 간결한 문법인  List Comprehension에 대해 알아보려 합니다.

먼저 리스트 컴프리헨션 분법을 사용하면 알고리즘을 작성할 때 파생되는 자료 구조를 쉽게 생성할 수 있습니다.

a = [1,2,3,4,5]
b = [x**2 for x in a]

a라는 리스트에 있는 각 숫자의 제곱을 계산한다고 하면, b와 같이 계산을 수행할 수 있습니다.

 

map과 달리 리스트 컴프리헨션을 사용하면 입력 리스트에 있는 아이템을 간편하게 걸러내서 그에 대응하는 출력을 결과에서 삭제할 수 있습니다. map은 계산에 필요한 함수를 생성해야 해서 깔끔해 보이지가 않죠.

a = [1,2,3,4,5]
b = map(lambda x: x**2,a)

리스트 컴프리헨션을 이용하면 루프 뒤에 간단한 조건식을 추가해서 계산을 수행할 수도 있습니다.

 

a = [1,2,3,4,5]
b = [x**2 for x in a if x%2 == 0]

 

딕셔너리와 세트에도 해당하는 문법이 있습니다.

fruits = {'apple':1, 'banana':2, 'orange':3}
rank_dict = {rank: name for name, rank in fruits.items()}
fruits_len = {len(name) for name in rank_dict.values()}
print(rank_dict)
print(fruits_len)

* fruits의 아이템 선언 순서대로 for문을 돌려야 함

 


또한 다중 루프도 지원합니다.

다중 루프의 사용법은 입력 리스트의 레이아웃을 두 레벨로 중복해서 구성하는 것입니다.

 

mat = [[1,2,3],[4,5,6],[7,8,9]]
new = [x for a in mat for x in a]
print(new)

 

먼저 mat 행렬에서 a 라는 배열을 만들어주고, a 라는 배열에서 x를 저장하여 1차원 배열로 만듭니다

 

또 다른 예시를 보자면, 

a = [1,2,3,4,5,6,7,8,9,10]
b = [x for x in a if x > 4 if x% 2 == 0]

4보다 큰 짝수만 가져오겠네요

 


이번 글에서는 한 리스트에서 다른 리스트를 만들어내는 간결한 문법인  List Comprehension에 대해 알아보았습니다.

감사합니다!

 

 

728x90
반응형

'Programming > Python' 카테고리의 다른 글

[Python] 파일 입출력  (0) 2022.12.22
[Python] Enumerate, Zip  (0) 2022.12.22
[Python] PEP 8 스타일 가이드  (0) 2022.11.23