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 |