Python - For Loops

황인용·2019년 12월 12일
0

Python

목록 보기
23/44

For Loops

만약 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

image.png

Break

for 구문에서 보았듯이 element의 수 만큼 for구문에 속해 있는 statement를 실행한다.
이걸 interation이라고 하는데, 만일 list에 5개의 element가 있다면, 5번 반복한다는 뜻이다.
하지만 때로는 그 5번 중간 element를 확인하고 싶을 때가 있다. 따라서 break를 사용하여 interation을 빠져나올 수 있다.

image.png

Continue

만일 break처럼 for구문에서 빠져 나오고 싶지 않지만 다음 element, 즉 다음 interation으로 넘어가고 싶을때는 continue 문을 사용한다

image.png

Nested For Loops

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}")

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()]

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
profile
dev_pang의 pang.log

0개의 댓글