Python - For loops

GyungHo Go·2020년 4월 23일
0
post-thumbnail
post-custom-banner

파이썬의 직관적인 특징을 가장 잘 나타내 주는것이 for문이다.
for 문은 조건식의 결과를 변경하는 명령문을 따로 사용하지 않고도 튜플이나 리스트, 문자열 등을 원하는 횟수만큼 반복할 수 있도록 해준다.

for문의 구조는 다음과 같다.

for 변수 in 문자열(or 튜플 or 리스트):
	반복적으로 실행하고자 하는 명령문
                           ⁝

  • 기본예제
my_list = ['one', 'two', 'three']
for i in my_list:
	print(i)

결과
one
two
three
['one', 'two', 'three']의 첫번째 요소인 one이 먼저 i 변수에 대입된 후 print(i)문장을 수행한다. 이후에 나머지 요소들도 반복해서 문장을 수행한다.

Break

앞서 보았듯이 for 구문에서는 리스트가 가지고 있는 요소의 수 만큼 for 구문에 속해있는 코드를 실행한다. 이걸 iteration 이라고 한다.
만일 리스트가 5개의 요소를 가지고 있으면 5번 반복한다는 뜻이다. 그래서 for loops를 한국어로 for 반복구문 이라고 하기도 한다.

그런데 가끔은 중간에 도중하차(?) 하고 싶을때가 있다. 굳이 끝까지 for 구문을 진행할 필요 없이 중간에서 멈추고 싶을때는 break 문을 사용하면 된다. For 구문에서 break 문이 실행되면 다음 interation으로 넘어가지 않고 for 구문에서 빠져 나오게 된다.

Continue

만일 break처럼 for 구문에서 완전히 빠져 나오고 싶지는 않지만 다음 요소, 즉 다음 interation으로 넘어가고 싶을때는 continue 문을 사용하면 된다.

marks = [90, 25, 67, 45, 80]
number = 0 
for mark in marks: 
    number = number +1 
    if mark < 60:
        continue 
    print("%d번 학생 축하합니다. 합격입니다. " % number)

점수가 60점 이하인 학생은 mark<60 이 참이 되어 continue를 계속 실행하게 된다.

결과
"1번 학생 축하합니다. 합격입니다."
"3번 학생 축하합니다. 합격입니다."
"5번 학생 축하합니다. 합격입니다."

For문과 함께 자주 사용되는 range 함수

for문은 숫자 리스트를 자동으로 만들어 주는 range 함수와 함께 사용하는 경우가 많다. 다음은 range 함수의 간단한 사용법이다.

a = range(10)
a
range(0,10)

range(10)은 0부터 10 미만의 수를 포함하는 range 객체를 만들어 준다. 시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하는데, 이때 끝 숫자는 포함되지 않는다.

예시 1 _ 0부터 10까지 합을 for와 range를 이용해 구해보자.

add = 0
for i in range(0,11):
	add = add+i
print(add)

결과는 55

예시2 _ for와 range를 사용해 구구단을 만들어보자.

for i range(2, 10):
	for j range(1,10):
print('{}*{}={}'.format(o,j,o*j))

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

  • hint

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)
profile
기록하는 습관
post-custom-banner

0개의 댓글