-
2022.03.03 - [이코테] 파이썬 기초 문법(2) - 파이썬의 자료형개발/Python 2022. 3. 3. 18:56
기본 입출력
자주 사용되는 표준 입력 방법
- input() : 한 줄의 문자열을 입력 받는 함수
- map() : 리스트의 모든 원소에 각각 특정한 함수를 적용할 때
- list() : 리스트 선언
ex) 공백을 기준으로 구분된 데이터 입력 받기
- list(map(int, input().split())))
공백을 기준으로 구분된 데이터의 개수가 많지 않다면
- a, b, c = map(int, input().split())
- 공백 기준으로 문자열로 입력 받아서 -> int로 형변환
a = list(map(int, input().split())) print(a) >>> 1 2 3 4 5 >>> [1, 2, 3, 4, 5]
빠르게 입력받기
- sys 라이브러리에 정의된 sys.stdin.readline() 메소드 이용
단, 입력 후 엔터가 줄바꿈 기호로 입력되므로 rstrip() 메소드 함께 사용
- 입력을 많이 받는 경우 필요함(그래프, 정렬, 이진 탐색 시 유용)
자주 사용되는 표준 출력 방법
- 기본 출력 : print()
- 기본적으로 출력 이후에 줄바꿈 수행(원하지 않으면 end 속성 이용)
- f-string
- 문자열 앞에 접두사 f를 붙여 사용
- 문자열과 정수를 함께 넣을 수 있다는 이점
answer = 7 print(f"정답은 {answer}입니다.") >>> 정답은 7입니다.
조건문
- 코드의 블록과 들여쓰기로 지정
- 기본 형태 : if ~ elif ~ else
- 비교 연산자, 논리 연산자(and, or, not) 기타 연산자(in, not in) 존재
- 기타 연산자는 리스트, 튜플, 문자열, 딕셔너리 모두에서 사용 가능
X in 리스트 : 리스트 안에 X가 들어가 있을 때 참(True)이다.
X not in 문자열 : 문자열 안에 X가 들어가 있지 않을 때 참(True)이다.
- pass 키워드
- 아무것도 처리하고 싶지 않을 때
- 디버깅 과정에서 형태만 만들어놓고 넘어갈 수 있음
- 조건문의 간소화
- 실행될 소스코드가 한줄인 경우, 굳이 줄바꿈 안해도됨.
- 조건부 표현식(Conditional Expression): if ~ else문 한 줄에 작성
score = 85 if score >= 80: result = "Success" else: result = "Fail" print(result) >>>Success #조건부 표현식 result = "Success" if score >= 80 else "Fail" print(result) >>>Success
반복문
- while문, for문
- 연속적인 값을 차례대로 순화할 땐 range()
- range(시작값, 끝값+1)
-> 인자를 하나만 넣으면 시작값은 자동으로 0
- continue 키워드, break 키워드
scores = [90, 85, 77, 65, 97] cheating_student_list = {2, 4} for i in range(5): if i+1 in cheating_student_list: continue if scores[i] >= 80: print(i+1, "번 학생은 합격입니다.") >>>1 번 학생은 합격입니다. >>>5 번 학생은 합격입니다.
함수
1. 내장 함수 : input(), print() 등 파이썬에서 제공하는 함수
2. 사용자 정의 함수
- 어떻게 정의하는가?
def 함수명(매개변수): 실행할 소스코드 return 반환값
- 파라미터의 변수 직접 지정 가능 ( 순서 달라도 상관없음 )
add(b=3, a=7)
- global 키워드 : 함수 바깥에 선언된 변수 참조
array = [1, 2, 3, 4, 5] def func(): global array #값을 변경하거나 재할당하려면 global 키워드 이용 array = [3, 4, 5] array.append(6) func() print(array) >>> [3, 4, 5, 6]
- 여러개의 값 반환 가능(packing, unpacking)
def operator(a, b): add_var = a + b sub_var = a - b mul_var = a * b div_var = a / b return add_var, sub_var, mul_var, div_var #packing a, b, c, d = operator(7, 3) #unpacking print(a, b, c, d) >>> 10 4 21 2.3333333333333335
람다표현식
: 특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있음
1. 내장함수에서 자주 사용되는 람다 함수
array = [('홍길동', 50), ('이순신', 32), ('아무개', 74)] #정렬 기준 설정: 두번째 원소 #1. 일반 함수 활용 def my_key(x): return x[1] print(sorted(array, key=my_key)) #2. 람다표현식 활용 print(sorted(array, key=lambda x: x[1])) >>>[('이순신', 32), ('홍길동', 50), ('아무개', 74)] >>>[('이순신', 32), ('홍길동', 50), ('아무개', 74)]
2. 여러개의 리스트에 동일한 규칙을 가지는 함수 적용
list1 = [1, 2, 3, 4, 5] list2 = [6, 7, 8, 9, 10] result = map(lambda a, b: a+b, list1, list2) print(list(result)) >>> [7, 9, 11, 13, 15]
실전에서 유용한 표준 라이브러리
- 내장 함수 : 기본 입출력 함수부터 정렬 함수까지 기본적인 함수들을 제공
- itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능들을 제공 / 순열과 조합 라이브러리
- heapq : 힙(Heap) 자료 구조 제공 / 우선순위 큐
- bisect : 이진탐색(Binary Search) 기능 제공
- collections : 덱(deque), 카운터(Counter) 등의 유용한 자료구조 포함
- math : 필수적인 수학적 기능 제공 / 팩토리얼, 제곱근, 최대공약수, 삼각함수 관련 함수부터 파이(pi)와 같은 상수 포함
순열과 조합
- 순열 : 서로 다른 n개에서 서로 다른 r개를 선택하여 일렬로 나열하는 것 : nPr
- 조합 : 서로 다른 n개에서 순서에 상관없이 서로 다른 r개를 선택하는 것 : nCr
Counter
- 등장횟수를 세는 기능
- 리스트와 같은 반복가능한 객체가 주어졌을 때 내부의 원소가 몇번씩 등장했는지 count
from collections import Counter counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue']) print(counter['blue']) print(counter['green']) print(dict(counter)) #사전자료형으로 반환 >>> 3 >>> 1 >>> {'red': 2, 'blue': 3, 'green': 1}
최대공약수와 최소공배수
import math #최소공배수(LCM)을 구하는 함수 def lcm(a, b): return a * b // math.gcd(a, b) a = 21 b = 14 print(math.gcd(a, b)) #최대공약수 GCD 계산 print(lcm(a, b)) #최소공배수 LCM 계산 >>>7 >>>42
'개발 > Python' 카테고리의 다른 글
2022.04.29 - [이코테] 구현 (0) 2022.04.29 2022.03.03 - [이코테] 파이썬 기초 문법(1) - 파이썬의 자료형 (0) 2022.03.03 2022.03.03 - [이코테] 코딩테스트 개요 (0) 2022.03.03