for문

honeyricecake·2022년 6월 28일
0

파이썬

목록 보기
11/26

for문의 기본 구조

for 변수 in 리스트(또는 튜플, 문자열)
	수행할 문장1
    수행할 문장2
    ...

리스트나 튜플, 문자열의 첫번째 요소부터 마지막 요소까지 차례로 변수에 대입되어 수행할 문장1, 수행할 문장2 등이 수행된다.

(자바의 for - each문과 완벽히 같다는 것을 알 수 있다.)

예제를 통해 for문 이해하기

  1. 전형적인 for문
test_list = ['one', 'two', 'three']
for i in test_list:
	print(i)

one
two
three

가 출력되는 것을 볼 수 있다.

  1. 다양한 for문의 사용
a = [(1,2),(3,4),(5,6)]
for (first, last) in a:
    print(first + last)

3
7
11
이 출력되는 것을 볼 수 있다.

a리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 first, last에 대입되는 것이다.

  1. for문의 응용

for문의 쓰임새를 알기 위해 다음을 가정해보자.

"총 5명의 학생이 시험을 보았는데 시험 점수가 60점이 넘으면 합격이고 그렇지 않으면 불합격이다. 합격인지 불합격인지 결과를 보여 주시오."

marks = [90,25,67,45,80]

number = 0

for mark in marks:
    number += 1
    if mark >= 60:
        print(f"{number}번째 학생 합격")
    else:
        print(f"{number}번째 학생 불합격")

각각의 학생에게 번호를 붙여주기 위해 number 변수를 사용하였다. 점수 리스트 marks에서 차례로 점수를 꺼내어 mark라는 변수에 대입하고 for문 안의 문장들을 수행한다.

for뮨이 한번씩 수행될 때마다 number 는 1씩 증가한다.

1번째 학생 합격
2번째 학생 불합격
3번째 학생 합격
4번째 학생 불합격
5번째 학생 합격

이 출력되는 것을 볼 수 있다.

for문도 continue문을 사용하면 반복문 처음으로 돌아간다.

for문과 함께 자주 사용하는 range함수

for문은 숫자 리스트를 자동으로 만들어주는 range함수와 함께 자주 사용한다.

다음은 range함수의 간단한 사용법이다.

a = range(10)

range(10)은 0부터 10 미만의 숫자를 포함하는 range객체를 만들어 준다.

시작 숫자와 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하는데
이 때 끝 숫자는 포함하지 않는다.

즉, for i in range(0, 10)을 사용하면
이는 기존 C,자바에서 쓰던
for(int i - 0; i < 10; i++)와 완벽히 같다.

for와 range를 이용한 구구단

for i in range(2, 10):
    print()
    for j in range(1, 10):
        print(f"{i}곱하기{j}{i*j:>2}",end = ' ')

이 출력됨을 볼 수 있다.

리스트 내포 사용하기

리스트 안에 for문을 포함하는 리스트 내포(list comprehension)을 사용하면 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.

ex.

a = [1,2,3,4]
result = []
for num in a:
    result.append(num*3)

print(result)

이를 리스트 내포를 이용하면

a = [1,2,3,4]
result = [num * 3 for num in a]
print(result)

로 간단히 해결할 수 있다.

만약 [1,2,3,4] 중 짝수에만 3을곱하여 담고 싶다면 다음과 같이 리스트 내포 안에 if를 쓸 수 있다.

a = [1,2,3,4]
result = [num * 3 for num in a if num % 2 == 0]
print(result)

리스트 내포의 일반 문법은 다음과 같다.
[표현식 for 항목 in 반복가능객체 if 조건문]

조금 복잡하지만 for문을 2개 이상 사용하는 것도 가능하다.
[표현식 for 항목1 in 반복가능객체1 if 조건문1 for 항목2 in 반복가능객체2 if 조건문2 ... for 항목n in 반복가능객체n if 조건문n]

이를 이용해 구구단을 만들어보자.

print([f"{x}*{y} = {x * y}"for x in range(2, 10) for y in range(1, 10)])

0개의 댓글