[Python] 한 줄 for문 [x for x in range(y)] 알아보기
2021. 10. 12. 01:50 - 프론트맨
Python에는 한 줄 for문이라는 독특한 문법이 있습니다.
처음에는 되게 복잡해 보이고 이게 뭐지 싶을 텐데
이해하면 정말 편하고 유용한 기술입니다.
한 줄 for문을 쓰는 이유
한 줄 for문은 간편하게 리스트를 만드는 용도로 쓰입니다.
먼저 기본형을 살펴보면
# 한 줄 for문을 사용하지 않을 때
my_list = []
for x in range(5):
my_list.append(x)
print(my_list) # [0,1,2,3,4]
# 한 줄 for문을 사용했을 때
my_list = [x for x in range(5)]
print(my_list) # [0,1,2,3,4]
리스트에 0부터 4까지 집어넣는 예제입니다.
위의 코드와 아래 코드는 같은 의미입니다.
원래는 3줄을 써야 하는데 한 줄 for문을 사용하면 말 그대로 한 줄이면 충분합니다.
한 줄 for문 응용하기 (수식 추가)
수식을 추가할 수도 있습니다.
my_list = [x+x for x in range(5)]
print(my_list) # [0,2,4,6,8]
my_list = [x*x for x in range(5)]
print(my_list) # [0,1,4,9,16]
my_list = [x**x for x in range(5)]
print(my_list) # [1,1,4,27,256]
한 줄 for문 응용하기 ( if문 )
조건을 추가하는 것도 가능합니다.
my_list = [x for x in range(1, 11) if x % 2 == 0] # 짝수만 추출
print(my_list) # [2,4,6,8,10]
my_list = []
for x in range(1, 11):
if x % 2 == 0:
my_list.append(x)
print(my_list) # [2,4,6,8,10]
반복문 끝에 if 문을 추가하면 조건을 달 수 있습니다.
위의 코드를 풀어쓰면 아래 코드가 됩니다.
한 줄 for문 응용하기 ( 이중 for문 )
이중 for문도 가능합니다.
nums = [[4, 26, 88],
[77, 78, 26, 2, 89],
[2, 42, 70, 41],
[31, 92, 41],
[24, 85, 22, 5, 76]]
nums 에서 값이 50 이상인 숫자만 my_list에 담는 예제입니다.
한 줄 for문 없이 짠 코드
my_list = []
for x in nums:
for y in x:
if y >= 50:
my_list.append(y)
print(my_list) # [88, 77, 78, 89, 70, 92, 85, 76]
한 줄 for문으로 짠 코드
my_list = [y for x in nums for y in x if y >= 50]
print(my_list) # [88, 77, 78, 89, 70, 92, 85, 76]
다차원 리스트를 한 줄 for문으로 접근할 때 한 가지 주의할 점은
마지막에 결국 my_list에 들어갈 값을 맨 앞에 적어야 합니다.
이것만 조심하면 어렵지 않게 한 줄 for문을 다룰 수 있을 것이라고 생각합니다.
지금까지 한 줄 for문에 대해 다뤄보았습니다.
파이썬 초급자에게는 다소 생소할 수 있을 문법이라고 생각해서 정리해 보았습니다.
끝까지 읽어주셔서 감사드립니다.

'Programming > Python' 카테고리의 다른 글
| [Python] Selenium 정리 (0) | 2021.10.13 |
|---|---|
| [Python] 파이썬 requests.exceptions.ConnectionError 간단 해결 방법 (0) | 2021.10.10 |
| [Python] 파이썬 웹 스크래핑 완벽 정리(주식 시가 가져오기) (0) | 2021.10.09 |