인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
for문
- 기본 개념
# 기본 구조 for in <collection> <Loop body> # for문의 기본구조는 위와 같으며, collection에는 데이터 컨데이너 # 즉, 튜플·집합·리스트·딕셔너리 등이 올 수 있다. # 또한, <Loop body>에 for문의 code가 작성된다. # for문의 활용 예시 for v1 in range(10): print('v1 is :', v1) # 결과 : 0~9를 출력함 # collection에 위치한 range(10)는 0~9까지의 숫자 범위를 의미한다. for v2 in range(1, 11): print('v2 is :', v2) # 결과 : 1~10을 출력함 # collection에 위치한 range(1, 11)는 1~10까지의 숫자 범위를 의미한다. for v3 in range(1, 11, 2): print('v3 is :', v3) # 결과 : 1,3,5,7,9를 출력함 # collection에 위치한 range(1, 11, 2)는 1~10까지의 숫자 범위에서 # 1부터 시작하여 한 칸씩 건너뛰며 숫자를 가져오겠다는 의미이다. # 이처럼 range( )의 인자를 사용하여, 범위의 시작점·끝점과 # for문을 돌리는 규칙 등을 설정할 수 있다.(ex range의 마지막 인자 : 2) sum1 = 0 for v in range(1, 1001): sum1 += v print('1 ~ 1000 sum :', sum1) # 결과 : 1 ~ 1000 sum : 500500 print('1 ~ 1000 sum :', sum(range(1, 1001))) # 결과 : 1 ~ 1000 sum : 500500 # sum( ) 함수를 사용하면, 위의 for문과 동일한 결과 값을 출력할 수 있다. sum1 = 0 for v in range(1, 1001): sum1 += v print('1 ~ 1000 sum :', sum1) # 해당 for문의 code는 앞선 for문과 전혀 다른 결과 값을 출력한다. # 즉, print('1 ~ 1000 sum :', sum1)의 code 위치가 어디에 있는지에 따라 # 해당 for문의 결과 값도 달라진다. print('1 ~ 1000까지 4의 배수의 총합 :', sum(range(4, 1001, 4))) # 결과 : 1 ~ 1000까지 4의 배수의 총합 : 125500 # range( )의 마지막 인자인 4의 의미는 4~1000까지의 숫자 범위에서 # 4부터 시작하여 세 칸씩 건너뛰며 숫자를 가져오겠다는 의미이다.
- 응용 개념
# iterables 자료형 # iterables 자료형은 반복할 수 있는 객체를 의미하며, # 문자열·리스트·튜플·집합·딕셔너리는 모두 iterables 자료형을 리턴하므로, # for문에서 사용할 수 있다. # iterables 리턴함수는 range, reversed, enumerate, # filter, map, zip 등이 있다. # for문 활용 예시 # 리스트 names = ['Kim', 'Park', 'Cho', 'Lee', 'Choi', 'Yoo'] for n in names: print('You are : ', n) lotto_number = [11, 19, 21, 28, 36, 37] for n in lotto_number: print("Current Number : ", n) # 문자열 word = "beautiful" for s in word: print('word : ', s) # 딕셔너리 my_info = { "name": 'Lee', "Age": 33, "city": "Seoul" } for k in my_info: print('key :', my_info[k]) print('key :', my_info.get(k)) # print('key :', k)는 딕셔너리의 키를 결과 값으로 출력한다. # print('key :', my_info[k])는 딕셔너리의 벨류를 결과 값으로 출력한다. # print('key :', k)는 딕셔너리의 키를 결과 값으로 출력한다. # print('key :', my_info.get(k))는 딕셔너리의 벨류를 결과 값으로 출력한다. for v in my_info.values(): print('value :', v) # 이 경우에는 print('value :', v)가 딕셔너리의 벨류를 결과 값으로 출력한다. # 만약, my_info.values( )에서 values 대신 items 혹은 keys를 사용하면 # 키와 벨류를 함께 출력하거나, 키만 출력할 수도 있다. # for-if-else문 name = 'FineAppLE' for n in name: if n.isupper(): print(n) else: print(n.upper()) # 결과 : # 모든 글자가 대문자로 출력된다. # 즉, FineAppLE의 한 글자씩 for문으로 검토하는 과정에서 # 만약 해당 글자가 대문자라면 if문이 실행되어 출력되는 것이고 # 만약 해당 글자가 소문자라면 else문이 실행되어 대문자로 변환 후 출력하는 것이다. # isupper( ) 함수는 해당 단어가 대문지인지 아닌지를 검사하며, # islower( ) 함수는 해당 단어가 소문자인지 아닌지를 검사한다. # upper( ) 함수는 해당 단어를 대문자로 바꿔준다. # break numbers = [14, 3, 7, 23, 12, 43, 553, 28, 211, 21] for num in numbers: if num == 43: print('Found : 43!') else: print('Not found : ', num) # 이러한 for문은 43을 찾아서 출력한 후에도, 리스트 numbers의 모든 데이터를 # 검사하여 출력한다.(만약, 43만을 찾는 것이 목적인 코드라면 비효율적) for num in numbers: if num == 43: print('Found : 43!') break else: print('Not found : ', num) # 위의 코드와 달리 43을 찾으면 break가 실행되어, # 더 이상 for문이 실행되지 않고 for문을 빠져나간다.(불필요한 리소스 낭비X) # 즉, break는 for문을 중지하는 역할도 한다. # continue lt = ["1", 2, True, 4.3, complex(4)] for v in lt: if type(v) is bool: continue print("current type : ", v, type(v)) print("multiply by 2 ", v * 3) # 결과 : 1, 2, 4.3, 4+0j // 111, 6, 12.899999999999999, 12+0j # continue는 if문의 조건이 만족되면, if문의 code를 실행하지 않고 건너뛴다. # 즉, 데이터 True가 if문의 조건에 만족하기 때문에 True를 출력하는 # code를 실행하지 않고 건너뛰어서 그 다음 데이터 4.3을 검토한다.(스킵 기능) # continue는 데이터 모음에서 특정 데이터를 제외시키고 # for문을 돌리고자 할 때 주로 사용한다.(이 경우에는 불린 자료형을 제외) # for-else문 numbers = [14, 3, 7, 23, 12, 43, 553, 28, 211, 21] for num in numbers: if num == 23: print("Found : 23") break else: print('Not found : 23') # 결과 : Found : 23 # 이 경우에는 리스트에 23이 있기 때문에, 23을 찾아 출력한 후 # break로 for문을 빠져온 것이다. # if문의 조건이 충족되면 break가 걸리기 때문에 # else문은 실행되지 않는다. for num in numbers: if num == 49: print("Found : 49") break else: print('Not found : 49') # 결과 : Not found : 49 # 이 경우에는 리스트에 49는 없기 때문에, 모든 데이터를 for문으로 돌린 후에 # 49를 찾지 못하고 마지막으로 else문을 (1회만)실행시켜 해당 결과 값을 출력한 것이다. # 구구단(1단~9단) for i in range(1, 10): for j in range(1, 10): print('{:4d}'.format(i * j), end='') print() # 출력창의 줄바꿈 용도 # 변환 예시 name2 = 'Aceman' print('Reversed', reversed(name2)) # 결과 : Reversed <reversed object at 0x10b053520> # 자료형의 변환 없이 reversed( ) 함수를 사용하면, 해당 변수의 id값이 출력된다. print('List', list(reversed(name2))) # 결과 : List ['n', 'a', 'm', 'e', 'c', 'A'] # 자료형의 변환을 해줘야만, 원하는 결과 값을 얻을 수 있다. # reversed( ) 함수를 자료형 변환 함수와 함께 사용하면, # 해당 데이터의 순서를 역으로 바꾼다. print('Tuple', tuple(reversed(name2))) # 결과 : Tuple ('n', 'a', 'm', 'e', 'c', 'A') # 동일한 원리 print('Set', set(reversed(name2))) # 결과 : Set {'A', 'a', 'c', 'e', 'n', 'm'} # 단, 집합은 순서가 없는 자료형이기 때문에 위의 경우와 달리 # 해당 데이터의 순서가 임의로 출력된다.
'Python' 카테고리의 다른 글
Python - functions (0) | 2021.10.15 |
---|---|
Python - while문 (0) | 2021.10.14 |
Python - if문 (0) | 2021.10.14 |
Python - 기초 자료형(집합) (0) | 2021.10.13 |
Python - 기초 자료형(딕셔너리) (0) | 2021.10.13 |
댓글