python list의 특이한점은 list안에 for문과 if문을 사용할 수 있다는 점이다. 아래와 같이 표현 가능하다.
[식 for 변수 in 리스트]
list(식 for 변수 in 리스트)
간단한 예제를 살펴보자.
# test.py
a = [ i*2 for i in range(10)]
print(a)
step 1. for i in range(10) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 step 2. i*2 for i in range(10) : 0, 2, 4, 6, 8, 10, 12, 14, 16, 18 step 3. a = [ i*2 for i in range(10)] : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] |
위 표현식에 if문을 추가할 수 있다.
# test.py
a = [ i*2 for i in range(10) if i%2 == 0 ]
print(a)
step 1. for i in range(10) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 step 2. for i in range(10) if i%2 == 0 : 0, 2, 4, 6, 8 step 2. i*2 for i in range(10) if i%2 : 0, 4, 8, 12, 16 step 3. a = [ i*2 for i in range(10)] : [0, 4, 8, 12, 16] |
for문과 if문을 여러번 사용할 수도 있다. 아래와 같이 여러줄로 표현된 구구단 출력 프로그램을 list comprehension으로 표현하면 한줄로 표현가능하다. (결과는 동일)
# test.py
for i in range(2, 10): # 2 ~ 9
for j in range(1, 10): # 1 ~ 9
print(f'{i} x {j} = {i*j}')
# list comprehension
[print(f'{i} x {j} = {i*j}') for i in range(2, 10) for j in range(1, 10)]
...
[파이썬(Python)] #9. re 모듈, 정규식 표현 (0) | 2021.08.22 |
---|---|
[파이썬(Python)] #24. with 구문 (0) | 2021.08.22 |
[파이썬(Python)] #22. for문 / enumerate 내장함수사용 (0) | 2021.08.20 |
[파이썬(Python)] #21. 멀티프로세싱 ( multiprocessing ) (0) | 2021.08.20 |
[파이썬(Python)] #20. thread (0) | 2021.08.20 |