알고리즘 스터디를 위해 파이썬에서 코딩테스트를 위해 자주 쓰이는 연산자와 내장함수 관련 내용을 간략하게 정리해봤다.
연산
기존 언어와 파이썬에서 다른 연산자
- 파이썬에서 나누기는
/
와//
가 있다. 전자는 소수점을 표시하고 후자는 정수만을 생성한다. - 파이썬의 제곱 연산자는
**
이다. - 그 외 C스타일과 동일.
추가적인 연산관련 내장함수
abs(x) # 절대값
divmod(x, y) # (x//y, x%y) 튜플을 반환한다
round(x, n) # 10^-에 가장 가까운 수로 반올림한다 (부동소수점 전용)
all(a) # a에 속한 모든 항목이 참이면 True반환
any(a) # a에 속한 모든 항목 중 하나라도 참이면 True 반환
len(a) # a의 길이
min(a)
max(a)
sum(a)
oct(a) # 정수a를 8진수 문자로 변환한다.
hex(a) # 정수a를 16진수 문자로 변환한다.
ord("A") # 65, 단일 문자의 서열값을 반환한다
문자열 혹은 리스팅
+
: 문자열의 연결string[i:j]
: 분할
얕은 복사
s * n
: s에 대한 n개의 복사본을 만든다 (얕은 복사)
리스트의 복사본 생성 (깊은 복사)
a=[3,4,5]
c=[list (a) for j in range(4)]
print(c) # [[3, 4, 5], [3, 4, 5], [3, 4, 5], [3, 4, 5]]
a[0]=-9
print(c) # [[3, 4, 5], [3, 4, 5], [3, 4, 5], [3, 4, 5]]
print(a) # [-9, 4, 5]
c[0][0]=-1
print(c) # [[-1, 4, 5], [3, 4, 5], [3, 4, 5], [3, 4, 5]]
리스트 풀어헤치기
item = [3,4,5]
x,y,z = item
print (x,y,z) # 3 4 5
문자열 슬라이싱
S = ["안","녕","하","세","요"] # ['안', '녕', '하', '세', '요']
S = list("안녕하세요") # ['안', '녕', '하', '세', '요']
S[1:4] == 녕하세
S[1:-2] == 녕하
S[1:] == 녕하세요
S[1:100] == 녕하세요
S[-1] == 요
S[:-3] == 안녕
S[-3:] == 하세요
S[::1] == 안녕하세요
S[::-1] == 요세하녕안 # 문자열 뒤집기
S[::2] == 안하요
집합
a=set(["les","paul","reed","smith"])
b=set(["les","paul"])
c = a | b # {'paul', 'smith', 'reed', 'les'}
c = a & b # {'paul', 'les'}
c = a - b # {'reed', 'smith'}
두 리스트의 원소로 튜플 만들기
a = [1,2,3,4,5]
b = [4,5,2,1,3]
c=zip(a,b)
list(c) #[(1, 4), (2, 5), (3, 2), (4, 1), (5, 3)]
조건표현식의 줄임
if a <=b:
minvalue = a
else:
minvalue = b
위 코드는 아래와 같다
minvalue = a if a <= b else b
- 응용코드
values = [1, 100, 45, 23, 73, 37, 69]
clamped = [x if x < 50 else 40 for x in values]
print(clamped) # [1, 40, 45, 23, 40, 37, 40]
이터레이터의 생략
- map
s = map(function, arr)
s = [fuction(elem) for elem in arr] # 위와 같은 코드다
혹은 아래와 같은 이터레이터의 생략도 가능하다.
def two_times(numberList):
result = [ ]
for number in numberList:
result.append(number*2)
return result
result = two_times([1, 2, 3, 4])
print(result) #[2, 4, 6, 8]
def two_times(x):
return x*2
#...
list(map(two_times, [1, 2, 3, 4])) # [2, 4, 6, 8]