[Python]
파이썬 - 반복문(for)
AI gina
2022. 5. 20. 09:32
for 반복문
- 리스트, 문자열 등등 순회 가능한 객체를 순회하면서 값을 처리할 때 사용한다.
- 모든 아이템이 순회되면 for 블록 종료된다.
- for문의 기본구조
for 변수 in 리스트(또는 튜플, 문자열): 수행할 문장1 수행할 문장2 ...
for문 사용해보기
s = 'hello world!'
for c in s : #for c : c라는 그릇을 준비한다. in s : s라는 리스트에서 하나씩 꺼낸다.
print(c)
h
e
l
l
o
w
o
r
l
d
!
a = [1,2,3,4,5]
for num in a :
print(num)
1
2
3
4
5
a = [1,10,9,24,25,26]
for num in a:
if num > 20:
print(num)
24
25
26
10
24
26
list_b = [(1,2), (3,4), (5,6)]
for t in list_b:
print(t)
(1, 2)
(3, 4)
(5, 6)
list_b = [(1,2), (3,4), (5,6)]
for t1, t2 in list_b:
print(t1,t2)
1 2
3 4
5 6
print(t1)
print(t2)
print(t1)
print(t2)
1
print(t1)
2
print(t2)
5
6
a,b=(1,2)
print(a,b)
1 2
scores = [33,21,43,56,78,63,91,84,59,81]
for i in range(len(scores)):
result = 'fail' if scores[i] < 60 else 'pass'
print(f'{i+1}번 학생 {result}')
1번 학생 fail
2번 학생 fail
3번 학생 fail
4번 학생 fail
5번 학생 pass
6번 학생 pass
7번 학생 pass
8번 학생 pass
9번 학생 fail
10번 학생 pass
문자열의 아이템 출력하기
- 문자열의 경우 순회 가능, 리스트의 유사하게 순회 가능하다.
리스트 아이템 출력하기
dict의 아이템 출력하기
- dictionary의 경우 기본적으로 순회 하게 되면 key값을 참조한다.
- keys()함수를 이용하여 key 값만 순회 가능하다.
- values()함수를 이용하여 value 값만 순회 가능하다.
- items()함수를 이용하여 tuple형태로 key, value 순회 가능하다.
person = {'name':'kang', 'phone':'010-0000-0000', 'address':'경기도 고양시'}
person.keys()
dict_keys(['name', 'phone', 'address'])
for key, value in person.items():
print(key, person[key])
name kang
phone 010-0000-0000
address 경기도 고양시
for value in person.values():
print(value)
for에서 index 사용하기
- 기본적으로 for에 리스트를 순회하는 경우, 값만 추출 한다.
- 아래와 같은 코드로 인덱스와 값 모두 사용 가능(enumerate 함수 이용)하다.
a = [22, 43, 66, 44, 77]
for index, value in enumerate(a) :
print(f'{index}에 해당하는 값은 {value}')
0에 해당하는 값은 22
1에 해당하는 값은 43
2에 해당하는 값은 66
3에 해당하는 값은 44
4에 해당하는 값은 77
break
- 반복문을 수행하는 도중 break를 만나면 loop 종료가 가능하다.
for index, value in enumerate(a):
if value <= 20 :
break
print(f'{index}번째수는 {value} 입니다.')
0번째수는 22 입니다.
1번째수는 43 입니다.
2번째수는 66 입니다.
3번째수는 44 입니다.
4번째수는 77 입니다.
continue
- 반복문을 수행하는 도중 continue를 만나면 해당 아이템을 건너 뛴다.
for index, value in enumerate(a):
if value <= 20 and value <= 30 :
continue
print(f'{index}번째수는 {value} 입니다.')
0번째수는 22 입니다.
1번째수는 43 입니다.
2번째수는 66 입니다.
3번째수는 44 입니다.
4번째수는 77 입니다.
a = [22, 43, 66, 44, 77]
for index, value in enumerate(a):
if 20 <= value <= 30 :
continue
print(f'{index}번째수는 {value} 입니다.')
1번째수는 43 입니다.
2번째수는 66 입니다.
3번째수는 44 입니다.
4번째수는 77 입니다.
loop 중첩
- 반복문의 경우에도 중첩하여 사용 가능하다.
- 중첩이라는 것은 반복문 블록의 코드안에 또 반복문의 코드가 작성되는 것을 의미한다.
- 이런 경우, 내부 루프는 외부 루프가 수행되는 만큼 반복 수행 된다.
- 또한 중첩의 경우 무한히 가능하다.
for 변수 in 리스트(또는 튜플, 문자열):
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
...
for i in [1,2,3,4]:
for j in [4,5,6,7]:
print(f'{i}+{j}={i+j}')
print('========')
1+4=5
1+5=6
1+6=7
1+7=8
========
2+4=6
2+5=7
2+6=8
2+7=9
========
3+4=7
3+5=8
3+6=9
3+7=10
========
4+4=8
4+5=9
4+6=10
4+7=11
========
구구단 출력하기
2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 ... 2 * 9 = 18 3 * 1 = 3 .. 3 * 9 = 27 ... 9 * 1 = 9 ... 9 * 9 = 81
for i in range(2,9):
for j in range(1,10):
print(f'{i}*{j}={i*j}')
print('-------------')
**아래 정렬 재확인 필요***
for j in range(1,10):
for i in range(2,10):
print(i, '*', j, '=', i*j, end = '\t')
collection의 길이
- len() 내장함수로 계산 가능하다.
- 내장함수란 파이썬 내부에 구현되어 있어서, import하지 않고도 사용 가능한 함수를 의미한다.
- abs, len, type, range 등이 있다.
len(a)
len('hello')
len(range(3,100))
97
list(range(1, 101))
range 함수
- 리스트를 쉽게 만들 수 있는 내장함수이다.
- 주어진 값에 따라 다양한 결과를 반환한다.
- 숫자리스트를 자동으로 만들어 주는 range함수와 for문은 함께 자주 사용된다.
range(10) -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
range(2, 10) -> [2, 3, 4, 5, 6, 7, 8, 9]
range(2, 10, 3) -> [2, 5, 8]
- 1 - 100까지의 리스트 생성하기
list(range(1, 101))
# for와 range()를 이용하여 1-100까지 더하는 코드를 작성하시오.
sum = 0
for i in range(1, 101) :
sum += i
print(sum)
5050
연습문제
- 1 - 100까지 정수 중 2의 배수 또는 11의 배수를 모두 출력하시오.
- a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 최대값과 최소값을 찾으시오. (sorted, sort 사용 금지)
- a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 평균을 구하세요.
- 위의 리스트중에서 짝수에는 2를 홀수에는 3을곱해서 각각 짝수, 홀수 리스트를 새로 작성하시오.
for i in list(range(1,101)) :
if i%2 == 0 or i%11 == 0 :
print(i)
# a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 최대값과 최소값을 찾으시오.
# (sorted, sort 사용 금지)
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
#최소값 구하기
min=a[0]
for i in a :
if i < min :
min = i
print(min)
####################
#최대값 구하기
i=0
max=0
for i in a :
if i > max :
max = i
print(max)
####################
max=0 #max에 초기값 할당
for i in a : # i에 리스트 a 에 있는 값 하나씩 꺼내기
if i > max : # i가 max보다 크면,
max = i # i를 max에 할당하기
max
# a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 평균을 구하세요.
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
#합계 구하기
sum=0 #sum에 초기값 할당
for i in a : # i에 리스트 a 에 있는 값 하나씩 꺼내기
sum += i #sum에 i를 더해서 sum에 다시 할당하기
print(sum) #i의 합계
#평균 구하기
for i in a:
avg = sum/len(a)
print(avg)
1
99
# a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45] 에서 평균을 구하세요.
a = [22, 1, 3, 4, 7, 98, 21, 55, 87, 99, 19, 20, 45]
#합계 구하기
sum=0 #sum에 초기값 할당
for i in a : # i에 리스트 a 에 있는 값 하나씩 꺼내기
sum += i #sum에 i를 더해서 sum에 다시 할당하기
print(sum) #i의 합계
#평균 구하기
for i in a:
avg = sum/len(a)
print(avg)
481
37.0
sum=0
for i in a :
sum += i
avg = sum/len(a)
print(f'합계: {sum}, 평균: {avg}')
합계: 481, 평균: 37.0
List comprehension
- [표현식 for 항목 in 반복가능객체]
- [표현식 for 항목 in 반복가능객체 if 조건문]
#리스트에 3을 곱한 결과를 새로운 리스트에 담는예제.
a = [1,2,3,4]
result = []
for value in a :
result.append(value*3)
print(result)
[3, 6, 9, 12]
result = [value*3 for value in a]
print(result)
[3, 6, 9, 12]
result = []
for value in a :
if value % 2 == 0:
result.append(value*3)
print(result)
[6, 12]
#짝수에만 곱하게 하고 싶다면??
even_list = [value * 3 for value in a if value%2==0]
print(even_list)
[6, 12]