- 기본 구조 : 표현식 + for문
result = [표현식 for 변수 in 리스트] - 표현식 + for문 + 조건문
result = [표현식 for 변수 in 리스트 조건문] - 표현식 + 조건문 + for문
result = [표현식 if 조건문 else 표현 for 변수 in 리스트] - 중첩 for문
result = [조건문 for 변수1 in 리스트1 for 변수2 in 리스트2 ...] - 중첩 List Comprehension
1. 기본 구조 : 표현식 + for문
result = [표현식 for 변수 in 리스트]
2. 표현식 + for문 + 조건문
result = [표현식 for 변수 in 리스트 조건문]
조건문이 for문 뒤에 붙는 경우에는 단일 조건문 밖에 못쓴다 (else나 elif 불가)
if를 여러번 사용하는 것은 가능(두 조건문이 and로 묶인 것과 같은 결과)
3. 표현식 + 조건문 + for문
result = [표현식 if 조건문 else 표현 for 변수 in 리스트]
4. 중첩 for문
result = [조건문 for 변수1 in 리스트1 for 변수2 in 리스트2 ...]
doubleFor = []
for i in range(1, 4) :
for j in range(1, 3) :
doubleFor.append(i*j)
print(doubleFor) #[1, 2, 2, 4, 3, 6]
doubleFor = [ i*j for i in range(1, 4) for j in range(1, 3) ]
print(doubleFor) #[1, 2, 2, 4, 3, 6]
이중배열 flatten 하는 방법도 마찬가지
doublist = [[1, 2], [3, 4], [5, 6]]
print([y for x in doublist for y in x])
#[1, 2, 3, 4, 5, 6]
for x in doublist 먼저 실행, x 에 doublist 요소(내부 리스트) 하나씩 들어와
다음으로 y for y in x 실행되어 x에 들어있던 요소(내부 리스트의 요소) 하나씩 y로
y로 이루어진 1차원 리스트 생성
5. 중첩 List Comprehension
밖에 있는 for문부터
result = [ [ 0 for i in range(2) ] for j in range(3) ]
print(result) # [ [0, 0], [0, 0], [0, 0] ]
아니 comprehension이 list, dict, set 동일한 방식으로 가능한거 나만 이제 알았나..?!
set = {이 안에 comprehension 표현식}
dict = {key:val 표현식} 출력값 표시 형식이 key:val 형식으로 출력. 표현식은 for key, val in enumerate()/zip() 이런식으로
출처: https://velog.io/@mttw2820/List-Comprehension-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC
'코테 공부 > python' 카테고리의 다른 글
Python 예약어 del, 함수 remove() (0) | 2023.05.24 |
---|---|
Python 최빈값 collections 모듈의 Counter 클래스, 안풀린 로직 (0) | 2023.05.24 |
Python divmod(num1, num2)[0 또는 1] (0) | 2023.05.24 |
Python 최대공약수(gcd), 최대공배수(lcm) (0) | 2023.05.23 |
Python Fraction (0) | 2023.05.22 |