Python basic

홍진우·2022년 1월 6일
0

DataStructure/Algorithm

목록 보기
2/14
  • 자료구조, 알고리즘 스터디를 하는데 있어, 또는 코딩테스트를 준비하는데 있어 익혀두면 좋을 파이썬 문법들에 대한 정리
    <앞으로 공부해 나가며 그때그때 추가할 예정입니다>

1. 자료형

1) 지수 표현법

1e9 == 1000000000.0
75.25e1 == 752.5
3954e-3 == 3.954

2) 리스트

파이썬의 리스트 자료형은 C++, Java 의 array와 같은 구조
Linked List의 기능을 포함하고 있으므로, append(), remove()등의 method 지원

리스트 comprehension

#0부터 19까지의 수중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i% 2 == 1]

array = []
for i in range(20):
	if (i%2 == 1):
    	array.append(i)

#1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i * i for i in range(10)]


# N * M 크기의 2차원 리스트 초기화
array == [[0] * m for _ in range(n)]
print(array)
#[[0,0,0,0],[0,0,0,0],[0,0,0,0]]
  • 반복문에서 변수값을 무시하고자 할때 _사용함!

  • 리스트 comprehension의 초기화
    (추후 추가 예정)

  • 리스트관련 기타 메서드와 시간복잡도

3) 문자열

X

4) 튜플

a = (1, 2, 3, 4)

리스트와 유사하지만, 한번 선언된 값은 변경 불가, 대괄호[]가 아닌 소괄호() 이용해야 한다는 차이점

  • 그래프 알고리즘 구현시 가장 많이 사용함!
    ex) 다익스트라 최단 경로 알고리즘에서, Priority queue에 한번 들어간 값은 변경되지 않으므로, 해당 큐를 튜플로 구현할 수 코드의 정확성/효율성 up
    일반적으로, '비용', '노드번호'를 튜플로 묶어서 관리

5) 딕셔너리

data = dict()
data['사과] = 'Apple'
data['바나나'] = 'Banana'

#method
data.keys()
data.values()

Key와 Value의 쌍을 데이터로 가지는 자료형.
내부적으로 Hash Table을 이용함
데이터의 검색 및 수정에 있어 O(1)의 시간에 처리 가능
리스트보다 훨씬 더 빠르게 동작함

  • 특정한 원소가 있는 지 검사하는 등의 몇가지 문제, 알고리즘 들에서 굉장히 간결한 풀이 가능함!

6) 집합(set)

집합은 일반적으로 리스트 혹은 문자열을 이용해 만들며 다음의 특징이 있다.

  • 중복 허용 X
  • 순서 X

리스트나 튜플과 달리 순서가 없기 때문에, 인덱싱을 통해 자료형의 값을 얻을 수 없음!
특정 원소가 존재하는지 검사하는 연산의 시간복잡도 : O(1)

  • 특정 데이터가 이미 등장한 적이 있는지 여부를 체크하는 문제등에서 매우 효과적!
data = set([1, 1, 2, 3, 4, 4, 5])

data = {1, 1, 2, 3, 4, 4, 5}


a = set([1,2,3,4,5])
b = set([3,4,5,6,7])

a|b		#합집합
a&b		#교집합
a-b		#차집합

2. 조건문

다른 언어와 달리 파이썬은 조건문 안에서 수학의 부등식 그대로 사용 가능함!
ex)
"x > 0 and x < 20"을 파이썬에서는 "0 < x < 20"으로 표현 가능

3. 반복문

추후 추가 예정

4. 함수

def 함수명(매개변수):
    실행할 소스코드
    return 반환값
  
# 이 때, 매개변수나 return문은 존재하지 않을 수도 있음.

람다 표현식

def add(a,b):
	return a+ b

print(add(3,7))


print((lambda a,b : a+b)(3,7))
#같은 의미



# 람다는 주로 map등의 함수와 주로 함께 사용
# map(함수, 리스트) : 리스트의 원소에 하나씩 함수를 적용후 새로운 리스트에 그 결과를 옮김
m = list(map(lambda x: x ** 2, range(5)))
print(m)
# [ 0, 1, 4, 9, 16]

5. Class, 객체지향개념

X

6. 입출력

꼭 외워야 하는 코드!

list(map(int, input().split()))

65 90 75 34 99와 같은 문자열 input이 주어지는 경우, 문자열을 split후, 공백을 기준으로 리스트로 저장 -> map을 이용하여 각각의 원소에 int() 적용 -> 그 결과는 다시 list()로 변환

파이썬의 기본 input()함수는 동작 속도가 느리므로, 종종 시간 초과로 오답판정 받는 경우 있음

  • 이때는 sys 라이브러리의 sys.stdin.readline() 함수 이용!

(나중에 써야할 경우가 생겼을때, 그때 추가할 예정)

#print

answer = 7
print("정답은 " + answer + "입니다.") # Error

print("정답은 " + str(answer) + "입니다.") 

#각 변수를 ,로 구분
print("정답은 ", answer, "입니다.") 

#f-string 문법 사용
print(f"정답은 {answer}입니다.") 

7. 주요 라이브러리와 내장함수

내장함수

기본 입출력, sorted 같은 정렬 기능

itertools

반복되는 형태의 데이터를 처리하는 기능, 순열과 조합 라이브러리 제공

heapq

Heap 기능 제공, 우선순위 큐 기능 구현하기 위해 사용

bisect

이진 탐색(Binary search) 기능 제공

collections

deque, Counter등의 자료구조를 포함한 라이브러리

math

팩토리얼, 제곱근,GCD, 파이, 삼각함수 등의 수학적 기능을 제공하는 라이브러리

profile
Yonsei Univ. Sports Industry studies/ Computer Science / Applied Statistics

0개의 댓글