목차

코딩테스트를 위한 파이썬 정리

🗓️

알고리즘 스터디를 위해 파이썬에서 코딩테스트를 위해 자주 쓰이는 연산자와 내장함수 관련 내용을 간략하게 정리해봤다.

연산

기존 언어와 파이썬에서 다른 연산자

  • 파이썬에서 나누기는 ///가 있다. 전자는 소수점을 표시하고 후자는 정수만을 생성한다.
  • 파이썬의 제곱 연산자는 ** 이다.
  • 그 외 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]