본 글은 Python 공식문서를 참고 하였습니다.
List Comprehension 을 이용하면 매우 간결한 코드로 원하는 리스트를 만들수 있습니다.
아래의 코드는 for loop을 사용해 각 수의 제곱을 리스트에 저장합니다.
square = []
for i in range(10):
square.append(i**2)
결과: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
List Comprehension을 이용하면 다음과 같이 간결한 코드를 쓸수 있습니다.
square = [i**2 for i in range(10)]
맨 먼저 저장 하고 싶은 값을 써주고 그에 이어서 for loop을 써줍니다.
이번에는 이중 for loop이 얼마나 간결하게 쓰여지는지 비교 해보겠습니다.
아래의 코드는 첫번째 배열 [1,2,3] 과 두번째 배열 [4,5,6] 을 조합하여 모든 combination을 찾는 방법입니다.
combination_list = []
for x in [1,2,3]:
for y in [4,5,6]:
combination_list.append((x,y))
결과: [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
List Comprehension
combination_list = [(x,y) for x in [1,2,3] for y in [4,5,6]]
이번에는 조금 더 복잡한 Matrix Transpose 를 해보도록 하겠습니다.
Matrix Transpose 란 매트릭스 안의 각 열과 행을 교체 해주는 변형법 입니다.
예를 들면 [ [1,2], [3,4] ] 를 Transpose 하게 되면 [ [1,3], [2,4] ] 로 변하게 됩니다.
matrix = [[1,2,3], [4,5,6], [7,8,9]]
transpose = []
for column in range(len(matrix)):
temp = []
for row in matrix:
temp.append(row[column])
transpose.append(temp)
결과: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
List Comprehension
matrix = [[1,2,3], [4,5,6], [7,8,9]]
transpose = [[row[i] for row in matrix] for i in range(3)]
이와 같이 List Comprehension을 잘 이용하면 코드가 간결해지고 가독성을 올릴 수 있습니다.
'개발 공부' 카테고리의 다른 글
Python Google image web crawling (구글 이미지 웹크롤링) (10) | 2021.02.14 |
---|---|
Binary Search Tree - javascript (0) | 2020.12.06 |
Express를 이용해 정적파일 불러오기 (0) | 2020.10.18 |
프로그래머스 - 다리를 지나는 트럭 (0) | 2020.09.29 |
Java에서 Array 와 ArrayList 의 변환법 (0) | 2020.09.29 |