반응형
이제 본격적으로 취업 준비를 해야 한다..
맨날 까먹는 파이썬 문법을 정리해보자!
리스트 컴프리헨션
- 리스트를 `초기화`하는 방법
- 2차원 리스트 초기화 시 매우 효과적
# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i*i for i in range(1,10)]
# N * M 크기의 2차원 리스트 초기화
n = 3
m = 4
array = [[0] * m for _ in range(n) ]
# [[0,0,0,0],[0,0,0,0], [0,0,0,0]]
리스트 관련 메서드
a = [1,4,3]
# 리스트에 원소 삽입
a.append(2)
# 오름차순 정렬
a.sort()
# 내림차순 정렬
a.sort(reverse = True)
# 리스트 원소 뒤집기
a.reverse()
# 특정 인덱스에 데이터 추가
a.insert(1,0) # 인덱스1 에 0추가
# 특정 값인 데이터 개수 세기
a.count(4)
# 특정 값 데이터 삭제 (인덱스가 낮은 것 하나)
a.remove(2)
튜플 자료형
- `( )` 사용
- 값 변경 X
사전 자료형
- `key` `value` 쌍을 가지는 자료형
- `원소 in 사전` 형태 사용 가능 (리스트, 튜플도 가능)
data = dict()
...
# 키 데이터만 담은 리스트
key_list = data.keys()
value_list = data.values()
for key in key_list:
print(data[key])
집합 자료형
- 중복 허용 X
- 순서 X
# 집합 자료형 초기화 방법
a = set([1,2,3,4,5])
b = {3,4,5,6,7}
a | b # 합집합 {1,2,3,4,5,6,7}
a & b # 교집합 {3,4,5}
a - b # 차집합 {1,2}
# 새로운 원소 추가
data.add(4)
# 새로운 원소 여러 개 추가
data.update([5,6])
# 특정한 값을 갖는 원소 삭제
data.remove(3)
itertools
`permutations(리스트, 숫자)`
`combinations(리스트, 숫자)`
`product(리스트, 리스트 or repeat = 숫자)` - 데카르트 곱
`combinations_with-replacement(리스트, 숫자)`
from itertools import permutations, combinations, product,
combinations_with_replacement
data = ['a', 'b', 'c']
result = list(permutations(data, 3)) # 모든 순열(순서가 있는) 구하기
result = list(combinations(data, 2)) # 2개를 뽑는 모든 조합 구하기
result = list(product(data,repeat = 2)) # 2개를 뽑는 모든 순열 구하기 (중복 허용)
result = list(combinations_with_replacement(data, 2)) # 2개를 뽑는 모든 조합 구하기 (중복 허용)
[('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')]
[('a', 'b'), ('a', 'c'), ('b', 'c')]
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('c', 'a'), ('c', 'b'), ('c', 'c')]
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'b'), ('b', 'c'), ('c', 'c')]
heapq
- 다익스트라, 최단 경로 알고리즘 에서 `우선순위 큐` 기능을 구현할 때 사용
- 최소 힙으로 구성, 오름차순 정렬됨
`heapq.heappush(힙, 값)`
`heapq.heappop(힙)`
# 힙 정렬
import heapq
def heapsort(iterable):
h = []
result = []
for value in iterable:
heapq.heappush(h, value)
for i in range(len(h)):
result.append(heapq.heappop(h))
return result
result = heapsort([1,3,5,7,9,2,4,6,8,0])
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 부호를 사용하여 최대 힙(max heap) 구현
import heapq
def heapsort(iterable):
h = []
result = []
for value in iterable:
heapq.heappush(h, -value)
for i in range(len(h)):
result.append(-heapq.heappop(h))
return result
result = heapsort([1,3,5,7,9,2,4,6,8,0])
#[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
bisect
- `이진탐색`을 쉽게 구현할 수 있는 라이브러리
`bisect_left(a, x)` 리스트 a에 데이터 x를 삽입할 가장 왼쪽 인덱스를 찾음
`bisect_right(a, x)` ~ 가장 오른쪽 인덱스를 찾음
-> 값이 특정 범위에 속하는 원소의 개수를 구하고자 할 때 사용
from bisect import bisect_left, bisect_right
a = [1, 2, 4, 4, 8]
x = 4
print(bisect_left(a, x)) # 2
print(bisect_right(a, x)) # 4
collections
- `deque` `counter` 제공
`deque` 스택, 큐를 구현할 때 사용하는 라이브러리
맨 앞 원소 추가, 원소 제거 O(1)
from collections import deque
data = deque([1, 2, 3])
data.appendleft(1)
data.append(5)
data.pop()
data.popleft()
math
- 수학적인 기능을 제공하는 라이브러리
- `팩토리얼` `제곱근` `최대공약수`
import math
print(math.factorial(5)) # 팩토리얼 출력
print(math.sqrt(20)) # 제곱근 출력
print(math.gcd(3, 12)) # 최대공약수 출력
print(math.pi) # 파이 출력
print(math.e) # 자연상수 출력
반응형
'취준 > 코딩테스트' 카테고리의 다른 글
[Python] 자주 나오는 코딩테스트 유형 정리 (0) | 2024.08.25 |
---|---|
프로그래머스 (python): 문자열 내림차순으로 배치하기 (0) | 2024.08.23 |
다시 풀어볼 알고리즘 (0) | 2024.08.08 |
백준 2504 (python): 괄호의 값 (0) | 2024.08.07 |
백준 14888 (python): 연산자 끼워넣기 (0) | 2024.08.05 |