728x90
1~20사이의 짝수만 들어있는 evens 리스트를 만드시오.
방법 1
먼저 evens라는 리스트를 정의하고 for 문에 %2를 한 값이 0이라면 2의 배수이므로 evens에 append를 하면 됩니다.
evens = []
for n in range(1,21):
if n%2 == 0:
evens.append(n)
방법 2
하지만 이런 방법도 있습니다.
evens = [n for n in range(1,21) if n%2 == 0]
4줄 --> 1줄로 바뀌었네요.
리스트를 이렇게 간단히 표현해줄 수 있는 걸 리스트 컴프리헨션이라고 합니다.
comprehension의 뜻은 이해(력)이라는 뜻인데 리스트의 이해라기 보다는, 축약이라는 표현이 더 자연스러워 보입니다.
알기 쉽게 표현해보자면
[ <<expression>> for <<element>> in <<iterable>> if <<condition>> ]
iterable 내의 element에 대해 condition을 만족하는 값만 expression대로 넣는다.
(제 멋대로 해석한 거라 이렇게 표현해도 될지 모르겠네요 ㅎㅎ)
if만 쓸 수 있냐구요? 아닙니다!
else도 쓸 수 있습니다 ㅎㅎ
짝수면 제곱을 하고, 그게 아니라면 세제곱을 해서 만든 리스트를 살펴봅시다.
square_cubes = []
for n in range(1,21):
if n%2 == 0:
square_cubes.append(n**2)
else:
square_cubes.append(n**3)
이번엔 else가 붙어서 총 6줄이 되었습니다.
하지만 컴프리헨션이라면?
square_cubes = [n**2 if n%2 == 0 else n**3 for n in range(1,21)]
이렇게 한줄로 쓰니 정말 고수가 된 것 같습니다. ㅠㅠ
다음 글에선 중첩하여 쓰는 법에 대해 알아봅시다.
728x90
'코딩코딩 > 파이썬' 카테고리의 다른 글
Python -아나콘다 가상환경 만드는 법 (파이썬 버전, 가상환경 이름 지정) (0) | 2020.08.17 |
---|---|
OS, xlrd, openpyxl,예외처리 (0) | 2020.07.08 |
itertools - cycle (0) | 2020.04.17 |
주피터 노트북 테마 한눈에 비교하기! (다운받는 법, 바꾸는 법) (1) | 2020.04.13 |
중첩된 반복문에 대한 List comprehension/리스트 컴프리헨션 (0) | 2020.03.30 |
댓글