View
For Loops
43-1. For Loops
39번 (Deleting Elements From List) 의 과제 기억 나시나요?
Input으로 주어진 리스트에서 홀수 값은 전부 삭제하여 짝수 값 요소만 남겨진 리스트를 출력하는 과제 였습니다.
기억나시죠?
그 과제를 아마 다음과 같이 구현하셨을것 같습니다.
my_list = [int(s) for s in input().split()]
## 아직 for loop을 배우지 않았으므로 if 문을 사용해서 해결.
if (my_list[4] % 2) == 1:
del my_list[4]
if (my_list[3] % 2) == 1:
del my_list[3]
if (my_list[2] % 2) == 1:
del my_list[2]
if (my_list[1] % 2) == 1:
del my_list[1]
if (my_list[0] % 2) == 1:
del my_list[0]
print(my_list)
리스트의 요소 하나 하나 일일이 if 구문을 사용해서 짝수 인지 홀수 인지 확인하고 홀수 이면 지우는 방식으로 구현했을 것입니다.
이렇게 일일이 요소마다 if 구문을 사용해야 하다보니 if 구문이 너무 많아져서 코드가 길어졌는데요, 자세히 살펴보면 각 if 구문이 굉장히 유사합니다. 실행하는 기능은 동일하고 다만 요소의 index만 다른것을 보실 수 있습니다.
그리고 무엇보다 과제에는 list가 총 5개의 요소를 가지고 있다는 가정이 있었지만, 만일 그런 가정이 없고 list의 총 길이를 사전에 알 수 없다면 if 구문만으로는 해결할 수 없습니다.
그래서 Python에서는 for 문을 제공합니다.
for 문은 list (혹은 다른 자료 구조)의 요소를 한번에 하나씩 가지고 원하는 로직을 실행할 수 있게 해주는 역할을 합니다.
for구문을 사용하면 과제를 다음과 같이 구현할 수 있습니다.
my_list = [int(s) for s in input().split()]
odd_numbers = [ ]
## 먼저 홀수값들을 골라내서 리스트를 만들고
for element in my_list:
if (element % 2) == 1:
odd_numbers.append(element)
## 홀수값들을 하나 하나 기존 리스트에서 지워준다
for odd_number in odd_numbers:
my_list.remove(odd_number)
print(my_list)
for 문을 사용하니 코드가 더 간략해졌죠?
더 대단한것은 list의 사이즈가 5가 아니라 5000 이라도 위의 동일한 코드가 적용된다는 것입니다!
for 문의 문법은 다음과 같습니다:
for element in list:
do_something_with_element
List의 요소를 한번에 한개씩 가지고 for 문 안에 있는 코드를 실행하게 됩니다.
for 문은 list 뿐만이 아니라 tuple, set 등 다른 자료구조와도 사용할 수 있습니다.
43-2. Break
앞서 보았듯이 for 문에서는 리스트가 가지고 있는 요소의 수 만큼 for 문에 속해있는 코드를 실행합니다.
이걸 iteration 이라고 합니다. 만일 리스트가 5개의 요소를 가지고 있으면 5 iterations 이라고 합니다.
즉 5번 반복한다는 뜻이죠. 그래서 for loops를 한국어로 for 반복구문 이라고 하기도 합니다.
그런데 가끔은 중간에 도중하차(?) 하고 싶을때가 있습니다. 굳이 끝까지 for 문을 진행할 필요 없이 중간에서 멈추고 싶을때는 break 문을 사용하면 됩니다.
for 문에서 break 문이 실행되면 다음 iteration 으로 넘어가지 않고 for 문에서 빠져 나오게 됩니다.
43-3. Continue
만일 break처럼 for 문에서 완전히 빠져 나오고 싶지는 않지만 다음 요소, 즉 다음 iteration으로 넘어가고 싶을때는 continue 문을 사용하면 됩니다.
43-4. Nested For Loops
if 구문과 마찬가지로 for 구문도 nesting 이 가능합니다.
numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20, 30, 40, 50]
for num1 in numbers1:
for num2 in numbers2:
print(f"{num1} * {num2} == {num1 * num2}")
Assignment
Input 으로 주어진 리스트에서 오직 한번만 나타나는 값 (unique value)을 가지고 있는 요소는 출력해주세요.
예를 들어, 다음과 같은 리스트가 주어졌다면:
[1, 2, 3, 4, 5, 1, 2, 3, 7, 9, 9, 7]
다음과 같이 출력되어야 합니다.
4
5
for i in my_list:
number = 0
#7
for e in my_list:
# 1 == 7
if i == e:
number += 1
#number == 7
if number > 1:
continue
elif number == 1:
print(i)
44. For Loops - Iterate with Python For Loops
44-1. Iterate with Python For Loops
우리는 파이썬 반복문을 통해서 여러번 코드 수행을 할 수 있습니다.
일반적인 반복문과 같은 형태는 range가 있습니다.
for in range(start_value, end_value, step)
range의 경우 시작조건, 종료조건, 스텝(생략 가능)을 쓸 수 있습니다.
range를 이용해서 0부터 4까지 리스트에 숫자를 집어넣는 코드는 다음과 같습니다.
our_list = [];
for i in range(0, 5):
our_list.append(i)
our_list를 print()문으로 찍어보면 결과는 다음과 같을 것입니다.
print(our_list)
> [0,1,2,3,4]
'PYTHON' 카테고리의 다른 글
TIL 27 | PYTHON_How import statement finds modules and packages (0) | 2021.08.10 |
---|---|
TIL 26 | PYTHON_Exceptions (0) | 2021.08.10 |
TIL 23 | Session_스타벅스_모델링 (0) | 2021.08.10 |
TIL 21 | PYTHON_Set 과 Dictionary_List 와 Tuple 의 차이 (0) | 2021.08.09 |
TIL 18 | PYTHON_Tubles (0) | 2021.08.09 |