For 구문은 list (혹은 다른 자료 구조)의 요소를 한번에 하나씩 가지고 원하는 로직을 실행할 수 있게 해주는 역할을 한다.
For 구문을 사용하면 이전에 if 문으로 했던 과제를 다음과 같이 구현할 수 있다.
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 element in list: do_something_with_element
List의 요소를 한번에 한개씩 가지고 for 구문 안에 있는 코드를 실행한다.
For 문은 list 뿐만이 아니라 tuple, set 등 다른 자료구조와도 사용할 수 있다.
앞서 보았듯이 for 구문에서는 리스트가 가지고 있는 요소의 수 만큼 for 구문에 속해있는 코드를 실행한다.
이걸 iteration 이라고 합니다.
만일 리스트가 5개의 요소를 가지고 있으면 5 iterations 이다.
즉 5번 반복한다는 뜻이다.
굳이 끝까지 for 구문을 진행할 필요 없이 중간에서 멈추고 싶을때는 break 문을 사용한다.
For 구문에서 break 문이 실행되면 다음 interation으로 넘어가지 않고 for 구문에서 빠져 나오게 된다.
만일 break처럼 for 구문에서 완전히 빠져 나오고 싶지는 않지만 다음 요소,
즉 다음 interation으로 넘어가고 싶을때는 continue 문을 사용한다.
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
My solution
my_list = [s for s in input().split()] unique_list = [] #my_list에 입력된 전체 수를 돌려주고 그 중에 중복된 값은 제외 for i in my_list: if i not in unique_list: unique_list.append(i) elif i in unique_list: unique_list.remove(i) print(unique_list)
Model solution
my_list = [s for s in input().split()] current_index = 0 for element in my_list: is_unique = True list_without_current_element = my_list[0:current_index] + my_list[current_index+1:] for element2 in list_without_current_element: if element == element2: is_unique = False break if is_unique: print(element) current_index += 1