- [BW 28] 컴프리헨션 내부에 제어 하위 식을 세 개 이상 사용하지 말라2024년 10월 28일
- 31514
- 작성자
- 2024.10.28.:58
컴프리헨션은 루프를 여러 수준으로 내포하도록 허용한다.
예를 들어 리스트 안에 리스트가 들어 있는 형태로 정의한 행렬을 단일 리스트로 단순화하는 예제를 살펴보자.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flat = [x for row in matrix for x in row] print(flat) >>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
또한, 컴프리헨션에서 다중 루프를 사용하는 예를 살펴보자.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] squared = [[x ** 2 for x in row] for row in matrix] print(squared) >>> [[1, 4, 9], [16, 25, 36], [49, 64, 81]]
하지만 많은 루프 또는 조건문을 사용해 컴프리헨션을 작성할 때는 다른 대안이 더 명확해 보일 수 있다.
# 컴프리헨션을 사용하는 경우 matrix = [[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]] flat = [x for sublist1 in matrix for sublist2 in sublist1 for x in sublist2] # 다른 대안 flat = [] matrix = [[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [13, 14, 15], [16, 17, 18]]] flat = [] for sublist1 in matrix: for sublist2 in sublist1: flat.extend(sublist2) print(flat) >>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
'Book > 파이썬 코딩의 기술' 카테고리의 다른 글
[BW 30] 리스트를 반환하기보다는 제너레이터를 사용하라 (2) 2024.10.30 [BW 29] 대입식을 사용해 컴프리헨션 안에서 반복 작업을 피하라 (0) 2024.10.29 [BW 27] map과 filter 대신 컴프리헨션을 사용하라 (0) 2024.10.28 [BW 26] functools.wrap을 사용해 함수 데코레이터를 정의하라 (0) 2024.10.25 [BW 25] 위치로만 인자를 지정하게 하거나 키워드로만 인자를 지정하게 해서 함수 호출을 명확하게 만들라 (0) 2024.10.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)