코딩 테스트 문제에서 나 같이 파이썬을 파이썬스럽게 잘 못쓰는 사람들을 위한 강의가 프로그래머스에 있었다.
무료로 진행중인 강의이고, 30분 정도면 금방 볼 수 있는 내용인데, 내가 필요하다 싶은 것만 짧게 정리해두었다.
모든 내용과 출처는 https://programmers.co.kr/learn/courses/4008 여기에 있다.
* 혹시나 문제가 있을 시에, 글을 바로 삭제하겠습니다.
n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수
파이썬의 int(x, base = 10) 함수는 진법 변환을 지원합니다. 이 기본적인 함수를 잘 쓰면 코드를 짧게 쓸 수 있고, 또 시간을 절약할 수 있습니다.
num = '3212'
base = 5
answer = int(num, base)
알파벳 출력하기 - string 모듈
파이썬은 이런 데이터를 상수(constants)로 정의해놓았습니다.
import string
string.ascii_lowercase # 소문자
abcdefghijklmnopqrstuvwxyz
string.ascii_uppercase # 대문자
ABCDEFGHIJKLMNOPQRSTUVWXYZ
string.ascii_letters #대소문자 모두
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
string.digits # 숫자 0123456789
2차원 리스트 뒤집기 - zip
파이썬의 zip과 unpacking 을 이용하면 코드 한 줄로 리스트를 뒤집을 수 있습니다.
mylist = [ [1,2,3], [4,5,6], [7,8,9] ]
list(map(list, zip(*mylist)))
# output:
# [[1, 4, 7], # [2, 5, 8], # [3, 6, 9]]
곱집합(Cartesian product) 구하기 - product
itertools.product를 이용하면, for 문을 사용하지 않고도 곱집합을 구할 수 있습니다.
import itertools
iterable1 = 'AB'
iterable2 = 'xy'
iterable3 = '12'
list(itertools.product(iterable1, iterable2, iterable3))
# output:
# [('A', 'x', '1'), ('A', 'x', '2'),
# ('A', 'y', '1'), ('A', 'y', '2'),
# ('B', 'x', '1'), ('B', 'x', '2'),
# ('B', 'y', '1'), ('B', 'y', '2')]
2차원 리스트를 1차원 리스트로 만들기 - from_iterable
파이썬의 다양한 기능을 사용하면, for 문을 사용하지 않고도 리스트를 이어붙일 수 있습니다.
my_list = [[1, 2], [3, 4], [5, 6]]
# 방법 1 - sum 함수
answer = sum(my_list, [])
* 가장 참신한 것만 가져왔음.
순열과 조합 - combinations, permutations
itertools.permutation를 이용하면, for문을 사용하지 않고도 순열을 구할 수 있습니다.
import itertools
pool = ['A', 'B', 'C']
# 3개의 원소로 수열 만들기
print(list(map(''.join, itertools.permutations(pool))))
# 2개의 원소로 수열 만들기
print(list(map(''.join, itertools.permutations(pool, 2))))
# output:
# ['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']
# ['AB', 'AC', 'BA', 'BC', 'CA', 'CB']
※ 조합은 itertools.combinations를 사용해서 구할 수 있습니다. 사용법은 permutations와 비슷해요!
가장 많이 등장하는 알파벳 찾기 - Counter
파이썬의 collection.Counter 클래스를 사용하면 이 코드를 간략하게 만들 수 있습니다.
import collections
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 7, 9, 1, 2, 3, 3, 5, 2, 6, 8, 9, 0, 1, 1, 4, 7, 0]
answer = collections.Counter(my_list)
print(answer[1]) # 4
print(answer[3]) # 3
print(answer[100]) # 0
이진 탐색하기 - binary search
파이썬의 bisect.bisect 메소드를 사용하면 이 코드를 간략하게 만들 수 있습니다.
import bisectmylist = [1, 2, 3, 7, 9, 11, 33]
print(bisect.bisect(mylist, 3)) # 3
가장 큰 수, inf
파이썬이 제공하는 inf
를 사용해보세요. inf는 어떤 숫자와 비교해도 무조건 크다고 판정됩니다.
min_val = float('inf')
min_val > 10000000000 # True
inf
에는 음수 기호를 붙이는 것도 가능합니다.
max_val = float('-inf')
'더 나은 엔지니어가 되기 위해 > 파이썬을 파이썬스럽게' 카테고리의 다른 글
pandas, 데이터 프레임 합치는 방법 중 뭐가 제일 빠를까 (0) | 2019.05.23 |
---|---|
파이썬 제너레이터 간단 정리 (0) | 2019.04.29 |
파이썬 정렬, 다중 조건으로 한 번에 하기. (8) | 2019.04.15 |
파이썬 Asterisk(*)에 대해서 (1) | 2019.04.04 |
파이썬 초급, 그 다음 단계 (0) | 2019.03.22 |