만약 list에서 element를 받아서 출력한다면...
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문을 사용하였을 때, 매 element를 index를 확인해서 불러야만 한다.
만약 100개의 element를 가진 list에서 element를 하나씩 읽어들인다면 if문을 100개 써야할 것..
따라서 파이썬은 For 구문을 통해 Loop 구조를만들어 실행하고자 하는 로직을 지원한다.
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구문은 다음과 같다
## for Syntax
for element in list:
do_something_with_element
for 구문에서 보았듯이 element의 수 만큼 for구문에 속해 있는 statement를 실행한다.
이걸 interation이라고 하는데, 만일 list에 5개의 element가 있다면, 5번 반복한다는 뜻이다.
하지만 때로는 그 5번 중간 element를 확인하고 싶을 때가 있다. 따라서 break를 사용하여 interation을 빠져나올 수 있다.
만일 break처럼 for구문에서 빠져 나오고 싶지 않지만 다음 element, 즉 다음 interation으로 넘어가고 싶을때는 continue 문을 사용한다
if구문과 마찬가지로 for구문도 Nesting이 가능하다
## Nesting for loops example
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}")
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()]
new_list = []
for i in my_list:
if i not in new_list:
new_list.append(i)
else:
new_list.remove(i)
print(new_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