파이썬(Python)/문법

list comprehension, for if문 써서 한줄로 list 만들기

끄적끄적아무거나 2020. 11. 19. 18:51
반응형

파이썬 예제들을 살펴 보면 한줄로 for문 if문을 사용해서 list를 만드는 것을 볼 수 있다.

 

효율적인 코딩을 위해 사용하는 방식으로 아래 파이썬 예제를 통해 이해해 보자.

 

아래 코드는 여러 리스트들 중에 가장 작은 숫자를 찾는 예제이다. 

 

yValues0 = [6,13,8,7]
yValues1 = [9,6.5,40,6,12]          
yValues2 = [8,7,3,1]  
yUpperLimit = 30            
yAll = [yValues0, yValues1, yValues2]   

minY = min([y for yValues in yAll for y in yValues])
maxY = max([y for yValues in yAll for y in yValues if y < yUpperLimit])

print(minY)
print(maxY)

>>결과

1
13

 

>>해석

yAll = [yValues0, yValues1, yValues2]  는 리스트를 이중으로 채워 넣은 구조이다. 

 

min([y for yValues in yAll for y in yValues]) 에서 우선 첫번째 for yValues in yAll 구문을 동작해서 yValues  가

두번째 for y in yValues 에 하나씩 들어가가고 각 리스트에서 값들이 y로 들어 간다. 그 y 값은 리스트 앞단에 변수로서 리스트를 채우게 된다. 

 

[y for yValues in yAll for y in yValues] 는 결국 각 리스트 안의 값들을 하나의 리스트에 넣은 식이다. 

 

[] 안에서 for 문이나 if 문은 순차적으로 적용 되고 (왼쪽에서 오른쪽 순) 조건식에 의해 list에 들어갈 값은 가장 왼쪽에 배치 된다. 

반응형

'파이썬(Python) > 문법' 카테고리의 다른 글

enumerate, index값 불러오기  (0) 2020.11.21
선언 전 메모리절약, range, getsizeof  (0) 2020.11.20
yield, next 란  (0) 2020.11.20
lambda, map 함수  (0) 2020.11.18
파일 처리 - 읽기 모드  (0) 2020.08.11