반응형
For문이란?
- while문과 for문은 둘 다 반복한다는 점에서 같으나, for문은 주어진 데이터 리스트 안에서 변수를 뽑아내 반복한다.
# for문 기본 구조
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
# while문 기본 구조
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
리스트를 사용한 전형적인 for문
>>> test_list = ['one', 'two', 'three']
>>> for i in test_list: # list의 요소가 i 변수에 먼저 대입된 후
>>> print(i) # print문 수행
one # 계속 반복
two
three
튜플을 사용한 전형적인 for문
>>> a = [(1,2), (3,4), (5,6)] # 리스트의 요소값이 튜플이기 때문에
>>> for first, last in a: # 각 요소가 (first, last)에 대입
>>> print(first + last)
3
7
11
>>> a = [(1,2), (3,4), (5,6)]
>>> for first in a: # 튜플 자체로 가져옴
>>> print(first)
(1, 2)
(3, 4)
(5, 6)
continue: 제어문 맨 처음으로 돌아가기
>>> marks = [90, 25, 67, 45, 80]
>>> number = 0
>>> for mark in marks:
>>> number = number +1
>>> if mark < 60: # 60점 이하일 경우에는 참
>>> continue # continue로 아무것도 수행하지 않음
>>> print("%d번 학생 축하합니다. 합격입니다. " % number)
1번 학생 축하합니다. 합격입니다.
3번 학생 축하합니다. 합격입니다.
5번 학생 축하합니다. 합격입니다.
For문과 range 함수
- range함수는 숫자 리스트를 자동으로 만들어 주는 함수다.
>>> a = range(10) # range(10)은 0부터 10미만 숫자 range 객체 생성
>>> a
range(0, 10)
# 시작과 끝 숫자 지정
>>> a = range(1, 11) # range(시작 숫자, 끝 숫자) 형태
>>> a # 하지만 끝 숫자는 포함되지 않는다
range(1, 11)
>>> marks = [90, 25, 67, 45, 80]
>>> for number in range(len(marks)): # len 함수는 리스트 내 요소의 개수 반환
>>> if marks[number] < 60: # len(marks)는 5
>>> continue # number에 0-4 대입
>>> print("%d번 학생 축하합니다. 합격입니다." % (number+1))
다중 for문으로 구구단 만들기
>>> for i in range(2,10): # 첫번째 for문이 2일때
>>> for j in range(1, 10): # 두번째 for문 1~9까지 전체 수행
>>> print(i,"*",j,"="i*j)
>>> if j == 9:
>>> print('\n')
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10
...
9 X 6 = 54
9 X 7 = 63
9 X 8 = 72
9 X 9 = 81
리스트 안에 For문 포함(List comprehension)
- 리스트 안에 for문을 포함하는 리스트 내포(List comprehension)를 사용하면 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.
# 리스트 내포 일반 문법 - if 조건문 생략 가능
[표현식 for 항목 in 반복가능객체 if 조건문]
# 리스트 내포 일반 문법 - 2개 이상의 for문 사용
[표현식 for 항목1 in 반복가능객체1 if 조건문1
for 항목2 in 반복가능객체2 if 조건문2
...
for 항목n in 반복가능객체n if 조건문n]
# 일반 for문
>>> a = [1,2,3,4] # 리스트 a
>>> result = [] # 빈 리스트 result - 나중에 결과값 넣을 변수 지정
>>> for num in a: # 리스트 a에서 뽑아서 num 변수에 배정
>>> result.append(num*3) # .append(x)는 리스트의 맨 마지막에 x추가
>>> print(result)
[3, 6, 9, 12]
# 위의 코딩을 리스트 내포화
>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a] # 리스트 result 안에 for문 자체 내포
>>> print(result) # 리스트 a 에서 뽑아서 num 변수 지정
[3, 6, 9, 12] # 이후 표현식 num * 3 실행
# 위의 코딩을 리스트 내포화 응용 - if문 추가
>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a if num % 2 == 0]
>>> print(result) # if num 변수가 짝수일때, num * 3 실행
[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]
Reference
반응형
'Data > Python' 카테고리의 다른 글
[Python] 파이썬 입출력 - 사용자 입력과 출력 (0) | 2023.06.17 |
---|---|
[Python] 파이썬 함수 - def, lambda (0) | 2023.06.17 |
[Python] 파이썬 제어문 - while 반복문, break, continue (0) | 2023.06.17 |
[Python] 파이썬 제어문 - If, elif, 조건부 표현식 (0) | 2023.06.17 |
[Python] 파이썬 집합 자료형 - 교집합, 합집합, 차집합, 함수들 (0) | 2023.06.17 |