for문 range,중첩for,while

Jaho·2021년 12월 4일
0

Python

목록 보기
7/18

range

for문의 범위를 반환할 때 사용
파이썬 내장함수 range()는 for 문에서 숫자로 반복범위를 지정할 때 많이 이용한다.

range(start, stop, step)

start = 시작범위
stop = 범위의 끝 지점
step = 증감의 크기
step은 양의정수와 음의정수만 사용할 수 있다.

range()함수로 만들어진 list출력

 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

다르지만 모두 같은 range

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문의 구조

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

조건 while

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 21

sum 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

while True :
	print('무한 반복이야~')

멈출수 없다면 즐겨라😉

반복문 제어 break & continue

break: 반복문(for문 , while문) 안에서 break를 만나게 되면 반복문을 빠져나오게 된다.

break를 이용하여 while문 빠져나오기

k=0

while True :
	k = k + 1  # k 1씩증가
   	if (k > 3) : # k가 3보다 크다면
		break	 # break로 while문 탈출하여
        
	print(k)  # k 출력

1
2
3

break를 이용하여 for문 빠져나오기

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 문에서 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)를 만나지 않고 반복문의 처음 지점으로 돌아간다.

while 문에서 break와 continue 모두 사용하기


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 문

파이썬에서는 리스트, 세트, 딕셔너리 내에서 실행할 수 있는 한 줄 for문이 있다.
리스트 컴프리헨션(List comprehension),
세트 컴프리헨션(Set comprehension),
딕셔너리 컴프리헨션(Dictionary comprehension)
컴프리헨션 == 내포(내장)하다.
코드를 한 줄로 작성할수 있어 편리하다.

리스트 컴프리헨션의 기본구조

[<반복 실행문> for <반복 변수> in <반복 범위>]

숫자 1~5가 들어있는 리스트에서 숫자를 제곱해 출력하자.

우선 기본적인 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]

profile
개발 옹알이 부터

0개의 댓글