for문의 범위를 반환할 때 사용
파이썬 내장함수 range()는 for 문에서 숫자로 반복범위
를 지정할 때 많이 이용한다.
range(start, stop, step)
start = 시작범위
stop = 범위의 끝 지점
step = 증감의 크기
step은 양의정수와 음의정수만 사용할 수 있다.
list(range(0,10,1))
#0부터 9까지 1증감
[0,1,2,3,4,5,6,7,8,9]
for a in range(0,6): #0부터 5까지 1증감
print(a)
0
1
2
3
4
5
step은 기본 1이기 때문에 생략해도 된다.
for a in range(0,6,2): #0부터 5까지 2증감
print(a)
0
2
4
print(list(range(0,10,1)))
print(list(range(0,10)))
print(list(range(10)))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(0,20,5))) # 0~19 , 5증가
print(list(range(-10,0,2))) # -10 ~ -1 2증가
print(list(range(3,-10,-3))) # 3 ~ -10 ,-3감소
print(list(range(0,-5,1))) # 0~ -5 까지 1증가
[0,5,10,15].
[-10,-8,-6,-4,-2].
[3,0,-3,-6,-9].
[]
중첩 for문의 구조
for <반복 변수> in <반복 범위> :
for <반복 변수2> in <반복 범위2> :
<코드블록>
실행 순서
반복변수 실행 -> 코드블록 ->
반복변수2의 반복을 모두 마침 -> 코드블록 -> 다시 반복변수
더이상 값이 없을 때 까지 반복
x_list = ['x1','x2']
y_list = ['y1','y2']
print('x y')
for x in x_list :
for y in y_list :
print(x,y)
x . . y
x1 y1
x1 y2
x2 y1
x2 y2
names = ['James','Robert','Lisa','Mary']
scores = [95,96,97,94]
리스트가 두 개 있을 때 이름별로 시험점수를 출력 해보자
names = ['James','Robert','Lisa','Mary']
scores = [95,96,97,94]
for k in range(len(names)):
print(names[k],scores[k])
James 95
Robert 96
Lisa 97
Mary 94
i = 0
sum = 0
print('i sum')
while ( sum < 20 ): #조건검사 sum이 20보다 작으면 반복하라
i = i + 1 # i를 1씩 증가
sum = sum + i # 이전의 sum과 현재 i를 더해서 갱신
print(i,sum) # i와sum을 출력
i sum
1 1
2 3
3 6
4 10
5 15
6 21sum i 값
0 1 1 . . . . . . .0 값(sum=0) 들어감 -> i +1 -> sum값에 i 값 더함
1 1
1 2 3
3 3 6
6 4 10
10 5 15
15 6 21
while True :
print('무한 반복이야~')
멈출수 없다면 즐겨라😉
break
: 반복문(for문 , while문) 안에서 break를 만나게 되면 반복문을 빠져나오게 된다.
k=0
while True :
k = k + 1 # k 1씩증가
if (k > 3) : # k가 3보다 크다면
break # break로 while문 탈출하여
print(k) # k 출력
1
2
3
k = 0
for k in range(10) : # k를 0~9 까지 반복한다
if(k > 2): # 만약 k가 2보다 크다면
break # break로 for문 탈출하여
print(k) # 출력
0
1
2
continue
: 반복문 안에서 continue
를 만나면 반복문의 처음으로 돌아가 다음 반복을 진행한다.
for k in range(5): # k를 0~4까지 반복한다.
if(k==2): # 만약 k가 2와 같다면 (k가 2라면)
continue # continue로 반복문의 처음(시작점)으로 돌아간다.
print(k) #출력
0
1
3
4
반복중에 k가 2가된다면 다음 코드 print(k)
를 만나지 않고 반복문의 처음 지점으로 돌아간다.
k=0
while True:
k= k+1 # k에 1을 더한다.
if(k == 2): #k가 2와 같다면
print('continue next') #출력
continue # 반복문의 처음으로 돌아간다.
if(k > 4): # k가 4보다 크다면
break # 반복문 탈출
print(k) #출력
1
continue next
3
4
파이썬에서는 리스트, 세트, 딕셔너리 내에서 실행할 수 있는 한 줄 for문이 있다.
리스트 컴프리헨션(List comprehension)
,
세트 컴프리헨션(Set comprehension)
,
딕셔너리 컴프리헨션(Dictionary comprehension)
컴프리헨션
== 내포(내장)하다.
코드를 한 줄로 작성할수 있어 편리하다.
[<반복 실행문> for <반복 변수> in <반복 범위>]
우선 기본적인 for문을 이용해보자.
numbers = [1,2,3,4,5]
square = []
for i in numbers:
square.append(i**2)
print(square)
[1,4,9,16,25]
numbers=[1,2,3,4,5]
square=[i**2 for i in numbers]
print(square)
[1,4,9,16,25]
[<반복 실행문> for <반복 변수> in <반복 범위> if <조건문>]
numbers = [1,2,3,4,5]
square = []
# 컴프리헨션을 사용하지 않은 for문
for i in numbers:
if i >=3: # i 가 3이상 이라면
square.append(i**2) # 거듭제곱 하여 추가
print(square)
#리스트 컴프리헨션
square = [i**2 for i in numbers if i >=3] #i가 3이상일때 거듭제곱한다.
print(square)
[9,14,25]