관리자 글쓰기

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문에 대해 다뤄보았습니다.

파이썬 초급자에게는 다소 생소할 수 있을 문법이라고 생각해서 정리해 보았습니다.

끝까지 읽어주셔서 감사드립니다.