for 반복문
for 반복자 in 반복할 수 있는 것:
코드
반복할 수 있는 것에는 문자열, 리스트, 딕셔너리, 범위 등이 있다.
for 반복문은 리스트(반복할 수 있는 것)에 있는 요소 하나하나가 element라는 변수에 들어가며, 차례차례 반복하게 된다. print( ) 함수로 element를 출력하므로 리스트의 요소를 차례차례 출력하게 되는 것이다.
- 예시 문제
## 반복문 내부에 if 조건문을 이용해서 100 이상의 숫자만 출력하게 만들어라..
numbers = [273, 103, 5, 32, 65, 9, 72, 800, 99]
for number in numbers:
if number >= 100:
print('100 이상인 수: ', number)
## numbers 홀짝 구분
for number in numbers:
if number % 2 ==0:
print('{}는 짝수입니다'.format(number))
else:
print('{}는 홀수입니다'.format(number))
## numbers 자릿수 파악
for number in numbers:
a = len(str(number))
print('{}는 {} 자릿수입니다.'.format(number, a))
## 숫자 하나씩 출력되게 해보자
list_of_list = [[1,2,3], [4,5,6,7], [8,9]]
for i in list_of_list:
for v in i:
print(v)
딕셔너리와 반복문
리스트가 '인덱스를 기반으로 값을 저장하는 것'이라면 딕셔너리는 '키를 기반으로 값을 저장하는 것'이다.
자료형 | 의미 | 가리키는 위치 | 선언 형식 |
인덱스 | 인덱스를 기반으로 값을 저장 | 인덱스 | 변수 = [ ] |
딕셔너리 | 키를 기반으로 값을 저장 | 키 | 변수 = { } |
딕셔너리는 중괄호 { }로 선언하며, '키: 값'형태를 쉼표( , )로 연결해서 만든다.
키는 문자열, 숫자, 불등으로 선언할 수 있으며 일반적으로 문자열을 사용한다.
value 를 출력하고 싶으면 'key'값을 호출하면 된다.
값을 부여해서 변경하는 것도 가능하다.
기존의 type인 백수에서 영앤리치로 주면 내 타입은 영앤리치로 변경된다.. ☆
만약 내 타입이 여러 개라면 여러 개의 값을 지정해 주면 된다.
여러 개의 값 중에서 뽑아서 출력하고 싶다면 인덱스를 활용하면 된다.
새로운 키와 값을 추가하고 싶다면 그냥 추가하면 된다. 성별을 추가해보자
이 때, 기존에 있는 키에 값을 주게 되면 기존의 값이 대치된다.
값의 제거의 경우 앞에서 공부한 del을 사용하면 된다.
type이 사라진 것을 확인할 수 있다.
딕셔너리 내부에 키가 있는지 확인하기
1. in 키워드
리스트 내부에 값이 있는지 없는지 확인할 때 in 키워드를 사용했던 것처럼 딕셔너리 내부에 키가 있는지 없는지 확인할 때도 in 키워드를 사용한다.
2. get( ) 함수
딕셔너리의 키로 값을 추출하는 기능으로 딕셔너리[키]를 입력할 떄와 같은 기능을 수행하지만, 존재하지 않는 키에 접근할 경우 KeyError를 발생시키지 않고 None을 출력한다.
존재하는 키값을 입력하면 그 키에 해당하는 값을 가져오고, 존재하지 않는 키 값을 부여하면 None으로 출력되는 것을 확인할 수 있다.
for 반복문: 딕셔너리와 함께 사용하기
딕셔너리 내부에 있는 키가 변수에 들어간다.
for 키 변수 in 딕셔너리:
코드
- 연습문제
나이와 '살'을 붙여서 출력하려면?
format 함수와 string 처리 후 연산자를 이용해서 붙이는 방법이 있다.
임의의 리스트 안에 해당하는 숫자가 몇 번 반복해서 나타나는지를 세주는 코드를 작성하는 것이다.
반복을 하면서 카운터 안에 number가 있으면 +1, 없으면 다시 1로 초기화를 하는 것이다.
즉, 앞에서부터 차례대로 있으면 기존에 있는 것에 +1, 없으면 1이 되는 것이다.
1: 1 + 1 + 1 = 3
2: 1 + 1 + 1 + 1 = 4
6: 1
8: 1 + 1 = 2
4: 1 + 1 + 1 = 3
.
.
.
7: 1 + 1 = 2
이런 식으로 전개 된 것이다.
이 코드의 경우 많이 사용되는 편이므로 이해가 잘 되지 않는다면 암기하는 것이 좋다.
character = {
'name': '기사',
'level': '12',
'items': { # item type은 dict
'sword': '불꽃의 검',
'armor': '풀플레이트'
},
'skill': ['베기','세게 베기', '아주 세게 베기'] # skill tpye은 리스트
}
for key in character:
if type(character[key]) is dict: # 아이템
for k in character[key]:
print('{} : {}'.format(k, character[key][k]))
elif type(character[key]) is list: # 스킬
for item in character[key]:
print('{} : {}'.format(key, item))
else: # 이름, 레벨
print('{} : {}'.format(key, character[key]))
name : 기사
level : 12
sword : 불꽃의 검
armor : 풀플레이트
skill : 베기
skill : 세게 베기
skill : 아주 세게 베기
하나씩 분리해서 딕셔너리나 배열에 있는 요소를 한 차원으로 변경해서 출력하게 하는 것을 flatten, flatting이라 한다.
기존에 items의 경우 dict안에 dict구조이고, skill은 dict 안에 list 구조이다.
반복문을 사용해서 하나씩 뽑아내면서 만약 캐릭터 키의 값이 dict라면(아이템) 캐릭터 키의 키에 접근하는 방식이다.
range(범위)
리스트, 딕셔너리 외에 for 반복문과 함께 많이 사용된다.
단, range( ) 함수의 매개변수로는 반드시 정수를 입력해야 한다. int( ) 함수 등으로 실수를 정수로 바꾸는 방법도 있지만, 정수 나누기 연산자( // ) 를 많이 사용한다.
n = 10
a = range(0, int(n/2))
print(a,':' ,list(a))
b = range(0, n//2)
print(b, ':', list(b))
================================
range(0, 5) : [0, 1, 2, 3, 4]
for 반복문: 리스트와 범위 조합하기
# 리스트 선언
array = [273, 32, 103, 57, 52]
#리스트에 반복문 적용
for element in array:
print(element)
print('-'*30)
# 몇 번째 출력일까?
for i in range(len(array)):
print('{}번째 반복: {}'.format(i, array[i]))
273
32
103
57
52
------------------------------
0번째 반복: 273
1번째 반복: 32
2번째 반복: 103
3번째 반복: 57
4번째 반복: 52
몇 번째 반복인지 알아내는 방법은 범위를 조합하는 방법 외에도 enumerate( ) 함수를 사용하는 방법이 있다.
for 반복문: 반대로 반복하기(역반복문)
😁
출처:
혼자공부하는파이썬(윤인성) https://www.youtube.com/watch?v=aoH8LzBkMzI&list=PLBXuLgInP-5kr0PclHz1ubNZgESmliuB7&index=23
'Data Scientist' 카테고리의 다른 글
tableau-online experiences (0) | 2020.04.14 |
---|---|
파이썬( while 반복문) (0) | 2020.03.20 |
파이썬(리스트: 리스트 연산자, append, insert, extend, del, pop, remove, clear, in/not in) (0) | 2020.03.17 |
파이썬(불 자료형과 if 조건문) (0) | 2020.03.16 |
파이썬(format함수, 문자열 포맷코드, upper/lower, strip, isOO, find/rfind, in, split함수) (0) | 2020.03.15 |