📖 for 문
리스트•튜플•문자열's 요소들을 차례로 변수에 대입 → for 문에 속한 문장들을 수행
1) for 문 기본 구조
for 변수 in 리스트(or 튜플, 문자열):
수행할 문장1
수행할 문장2
...
2) for 문 예제
# 리스트 test_list의 요소들이 차례로 변수 i에 대입됨; print(i)을 수행
>>> test_list = ['one', 'two', 'three']
>>> for i in test_list:
... print(i)
...
one
two
three
# 리스트 a의 요솟값이 튜플; 각각의 요소가 자동으로 (first, last) 변수에 대입됨
>>> a = [(1, 2), (3, 4), (5, 6)]
>>> for (first, last) in a:
... print(first, last)
...
3
7
11
3) for 문의 응용
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
number = number + 1
if mark >= 60:
print("%d번 학생은 합격입니다." % number)
else:
print("%d번 학생은 불합격입니다." % number)
- 각각의 학생에게 번호를 붙여주기 위해 number 변수 사용
- 리스트 marks에서 차례로 점수를 꺼내, 변수 mark에 대입; for 문 내의 문장들을 수행
- for 문이 한 번씩 수행될 때마다 number는 1씩 증가
4) for 문과 continue 문
- for 문 안의 문장을 수행하는 도중 continue 문을 만나면 for 문의 처음으로 돌아감
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
number = number + 1
if mark < 60:
continue
print("%d번 학생 축하합니다. 합격입니다." % number)
- 점수가 60점 미만인 학생은 continue 문이 수행되어 print 문을 수행하지 않고 for 문의 처음으로 돌아가게 됨
5) for 문과 range 함수
- range() : 숫자 리스트를 자동으로 만들어 줌
>>> a = range(10) # 0부터 10미만의 숫자를 포함하는 range 객체를 만듦
>>> a
range(0, 10) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- for 문에 range 함수 사용하기
>>> add = 0
>>> for i in range(1, 11):
... add = add + i
...
>>> print(add)
55
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)): #len() : 리스트 안의 요소 개수를 리턴하는 함수 # number 변수에 0~4의 숫자가 차례로 대입됨
if marks[number] < 60:
continue # 점수가 60점 미만이면 맨 처음으로 돌아감
print("%d번 학생 축하합니다. 합격입니다." % (number + 1))
- for와 range를 이용한 구구단
>>> for i in range(2, 10): # ← ①번 for 문
... for j in range(1, 10): # ← ②번 for 문
... print(i*j, end=" ") # end 파라미터 설정 : 수행 결과물(i*j) 사이에 간격 주기 위해
... print(' ') # 2단, 3단,... 사이에 줄바꿈
...
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
- ①번 for 문 : 2~9의 숫자가 차례로 변수 i에 대입됨
- ②번 for 문 : 1~9의 숫자가 차례로 변수 j에 대입됨
6) 리스트 컴프리헨션 사용
- 리스트 컴프리헨션 문법
[표현식 for 항목 in 반복가능객체 if 조건문]
* if 조건문은 생략 가능
* for 문 2개 이상 사용 가능
[표현식 for 항목1 in 반복가능객체1 if 조건문1
for 항목2 in 반복가능객체2 if 조건문2
...
for 항목n in 반복가능객체n if 조건문n]
- 리스트 안에, for 문을 포함하는 리스트 컴프리헨션 list comprehension 사용 : 조건문 더미를 더 간단하게 적을 수 있음
# 리스트 컴프리헨션 사용전
>>> a = [1, 2, 3, 4]
>>> result = []
>>> for num in a:
... result.append(num*3) # append() : 리스트 맨 마지막에 요소값 추가
...
>>> print(result)
[3, 6, 9, 12]
# 리스트 컴프리헨션 사용후
>>> a = [1, 2, 3, 4]
>>> result = [num*3 for num in a]
>>> print(result)
[3, 6, 9, 12]
# 리스트 컴프리헨션 안에 if 문 추가 : 짝수에만 3을 곱할 수 있게됨
>>> a = [1, 2, 3, 4]
>>> result = [num*3 for num in a if num%2 == 0]
>>> print(result)
[6, 12]
- 구구단의 모든 결과를 리스트에 담고 싶을 때; 리스트 컴프리헨션으로 구현 가능
>>> result = [x*y for x in range(2, 10)
... for y in range(1, 10)]
>>> print(result)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16,
20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42,
48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72,
9, 18, 27, 36, 45, 54, 63, 72, 81]
출처 : ⎡Do it! 점프 투 파이썬 (박응용)⎦
'Python > 03. 프로그램의 구조를 쌓는 제어문' 카테고리의 다른 글
03-2 while 문 (1) | 2024.07.14 |
---|---|
03-1 if 문 (0) | 2024.07.13 |