반응형
이 글은 본인의 입장에서 알고 있는 것들은 배제하고 잊고 있던 파이썬 특성을 기억을 되새기기 위한 지극히 주관적인 기록입니다.
파이썬에 대한 이해도가 거의 없는 분이 보시기에는 상당히 불친절한 글이라는 점 알려드립니다ㅜㅜ
자료형
리스트
크기 지정 리스트 초기화
a = [0]*n # [0,0,0,0,0,0,0,0,0,0]
리스트 컴프리헨션
arr = [i for i in range(10)] # [0,1,2,3,4,5,6,7,8,9]
arr = [i for i in range(10) if i%2==1 ] # [1,3,5,7,9]
# NxM 크기의 2차원 리스트 초기화
n=4
m=3
arr = [[0]*m for _ in range(n)] # [[0
리스트 관련 메서드
- append : O(1)
- sort : O(nogn)
- reverse() : O(n)
- insert(위치,값) : O(n)
- count(특정값) : O(n)
- remove(특정값) : O(n)
리스트에서 특정 값을 가지는 원소 모두 제거하기
arr = [1,2,3,4,5,5,5]
remove_set={3,5}
resullt = [i for i in arr if i not in remove_set]
문자열
- 특정 인덱스의 값 변경 불가 - Immutable(변경 불가능한)
- 따옴표 사용
- 백 슬래시를 사용하면, 따옴표를 원하는 만큼 포함 가능
print("친구가 말했다. \"달은 네모야!\"")
튜플
- 한 번 선언 된 값 변경 불가
- 다른 성질의 데이터를 묶어서 관리 할 때 사용
딕셔너리
- 키와 값의 쌍을 데이터로 가지는 자료형
- 해시 테이블을 이용하므로 데이터 조회 및 수정에 있어서 O(1) 시간에 처리 가능!
- 변경 불가능한 자료형을 키로 사용
- keys(), values() 함수
data = dict()
data['사과'] = 'apple'
data['바나나'] = 'banana'
key_list = data.keys()
value_list = data.values()
set - 집합
- 중복x , 순서x
- 조회, 수정 O(1)
집합 연산
a = set([1,2,3,4,5])
b = set([3,4,5,6,7])
#합집합 print(a|b)
#교집합 print(a&b)
#차집합 print(a-b)
set 자료형 함수
data = set([1,2,3])
#원소 추가
data.add(4)
#원소 여러개 추가
data.add([5,6])
# 특정 값 원소 삭제
data.remove(3)
두 개의 숫자형 리스트 합치기
list1=[1,2,3,4]
list2=[2,3,4,2]
result = map(lambda a,b:a+b, list1, list2) #[3,5,7,6]
실전에서 유용한 표준 라이브러리
- itertools : 파이썬에서 반복되는 형태의 데이터를 처리하기 위한 유용한 기능 제공
- 특히 순열과 조합 라이브러리 코테에서 자주 사용
- 순열 - 순서를 고려(일렬로 나열)
from itertools import permutations data=['A','B','C'] result = list(permutations(data,3)) # 모든 순열 구하기
- 조합 - 순서를 고려 x
from itertools import combinations data=['A','B','C'] result = list(combinations(data,2)) #2개를 뽑는 모든 조합 구하기 3C2 # [('A','B'),('B','C'),('A','C')]
- 중복 순열과 중복 조합
from itertools import product data=['A','B','C'] result = list(product(data,repeat=2)) # 2개를 뽑는 모든 순열 구하기 (중복 허용) from itertools import combbinations_with_replacement data=['A','B','C'] result = list(combinations_with_replacement(data,2)) # 2개를 뽑는 모든 조합 구하기 (중복 허용)
- 특히 순열과 조합 라이브러리 코테에서 자주 사용
- heapq : 힙 자료구조 제공
- 일반적으로 우선순위 큐 기능 구현을 위해 사용
- bisect : 이진탐색 기능 제공
- collections : 덱(deque), 카운터 등의 자료구조 포함
- counter
from collections import Counter counter = Counter(['red','blue','red','green','blue','blue']) print(counter['blue']) # blue가 등장한 횟수 print(dict(counter)) # {'red':2,'blue':3,'green':1}
- math
- 팩토리얼, 제곱근, 최대공약수, 삼각함수, pi
- 최대공약수(gcd), 최소공배수(lcm)
import math # 최소 공배수 LCM 구하는 함수 def lcm(a,b): return a*b//math.gcd(a,b); a=21 b=14 print(math.gcd(21,14)) # 최대공약수 계산 print(lcm(21,14) # 최소 공배수 계산
- 팩토리얼, 제곱근, 최대공약수, 삼각함수, pi
반응형