Post

Python Standard Library

Python Built-In methods



Link
docs.python.org/3/library/stdtypes.html






Python Standard Library List



List
docs.python.org/ko/3/library/index.html






sys



sys.stdin.readline()
input() 대신 사용, time out 발생 시 input 대신 사용하면 됨.


sys.setrecursionlimit(10**4)
재귀횟수 설정, 기본은 1000번임. 재귀 횟수를 늘리고자 할 때 사용






itertools



itertools
효율적인 루핑을 위한 이터레이터를 만드는 함수
docs.python.org/ko/3/library/itertools.html



짧은 입력에 관한 시퀀스



  • chain(*iterables)

    • 첫 번째 iterable에서 소진될 때까지 요소를 반환한 다음 iterable로 넘어가고 이런 식으로 iterables의 모든 이터러블이 소진될 때까지 진행하는 이터레이터를 만듦.

    • 여러 시퀀스를 단일 시퀀스처럼 처리하는 데 사용됨.


1
2
3
4
5
6
# example

chain('ABC', 'DEF') : A B C D E F

my_list = [[1, 2], [3, 4], [5, 6]]
list(itertools.chain(*my_list)) : [1,2,3,4,5,6]


  • chain.from_iterable(iterable) : chain()의 대체 생성자

    • ex) chain.from_iterable(['ABC', 'DEF']) : A B C D E F



무한 iterator



1
2
3
count(start,[step])

ex) count(10) : 10 11 12 . . .


1
2
3
cycle(iterable)

ex) cycle('ABCD') : A B C D A B C D . . . .


1
2
3
4
5
6
7
8
repeat(object, [times])

# object를 반복해서 반환하는 이터레이터 생성

# times 인자가 지정되지 않으면 무기한 실행


# ex) repeat(10, 3) : 10 10 10 



조합형 iterator



product(p, q, .. , [repeat=1])
주어진 iterable 객체들에 대해 곱 집합을 리턴
1
2
3
4
5
6
7
8
# ex) 
product('ABCD', repeat=2) : AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD

product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy

product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111

product(A, repeat=4) --> product(A, A, A, A) -> A A A A


permutations(iterable, r=None)
iterable에서 요소의 연속된 길이 r 순열을 반환
r이 지정되지 않았거나 None이면, r의 기본값은 iterable의 길이이며 가능한 모든 최대 길이 순열이 생성됨.
1
2
3
4
# ex) 
permutations('ABCD', 2) --> AB AC AD BA BC BD CA CB CD DA DB DC

permutations(range(3)) --> 012 021 102 120 201 210


combinations(iterable, r)
입력 iterable에서 요소의 길이 r 서브 시퀀스들을 반환
1
2
3
combinations('ABCD', 2) --> AB AC AD BC BD CD

combinations(range(4), 3) --> 012 013 023 123


combinations_with_replacement(iterable, r)
combinations 기능에서 추가로 개별 요소를 두 번 이상 반복할 수 있음
1
combinations_with_replacement('ABCD', 2) --> AA AB AC AD BB BC BD CC CD DD






collections



Docs
docs.python.org/ko/3/library/collections.html



deque



  • 양쪽 끝에서 빠르게 추가와 삭제를 할 수 있는 리스트류 컨테이너


  • deque([iterable[, maxlen]])

    • iterable의 데이터로 왼쪽에서 오른쪽으로 초기화된 새 deque 객체를 반환, iterable을 지정하지 않으면 빈 데크 반환.

    • maxlen이 지정되지 않거나 None이면, 데크는 임의의 길이로 커질 수 있음. 그렇지 않으면, 데크는 지정된 최대 길이로 제한됨.

    • 일단 제한된 길이의 데크가 가득 차면 새 항목이 추가될 때, 해당하는 수의 항목이 반대쪽 끝에서 삭제됨.


deque는 append, pop 연산 시 거의 O(1) 성능으로 지원함.

list는 append, pop 연산 시 O(n)



  • deque methods

    • append(x) : 데크의 오른쪽에 x를 추가.

    • appendleft(x) : 데크의 왼쪽에 x를 추가.

    • clear() : 데크에서 모든 요소를 제거하고 길이가 0인 상태로 만듦.

    • copy() : 데크의 얕은 복사본을 만듦.

    • len(deque) : deque 길이 반환

    • count(x) : x 와 같은 데크 요소의 수를 count.

    • extend(iterable) : iterable 인자에서 온 요소를 추가하여 데크의 오른쪽을 확장.

    • extendleft(iterable)
      • iterable에서 온 요소를 추가하여 데크의 왼쪽을 확장.
      • 일련의 왼쪽 추가는 iterable 인자에 있는 요소의 순서를 뒤집는 결과를 줌.
    • index(x[, start[, stop]])
      • 데크에 있는 x의 위치를 반환 (인덱스 start 또는 그 이후, 그리고 인덱스 stop 이전).
      • 첫 번째 일치를 반환하거나 찾을 수 없으면 ValueError를 발생.
    • insert(i, x) : x를 데크의 i 위치에 삽입합니다.
      • 삽입으로 인해 제한된 길이의 데크가 maxlen 이상으로 커지면, IndexError가 발생.
    • pop() : 데크의 오른쪽에서 요소를 제거하고 반환. 요소가 없으면, IndexError를 발생.

    • popleft() : 데크의 왼쪽에서 요소를 제거하고 반환. 요소가 없으면, IndexError를 발생.

    • remove(value) : value의 첫 번째 항목을 제거. 찾을 수 없으면, ValueError를 발생.

    • reverse() : 데크의 요소들을 제자리에서 순서를 뒤집고 None을 반환.
      • reversed(deque)는 파이썬 내장함수 이므로 지원함.
    • rotate(n=1) : 데크를 n 단계 오른쪽으로 회전. n이 음수이면, 왼쪽으로 회전.

    • maxlen : 데크의 최대 크기 또는 제한이 없으면 None. (read-only attribute)



Counter



  • 해시 가능한 객체를 세는 데 사용하는 딕셔너리 서브 클래스


  • Counter([iterable-or-mapping])

    • 요소가 딕셔너리 키로 저장되고 개수가 딕셔너리값으로 저장되는 컬렉션

    • 개수는 0이나 음수를 포함하는 임의의 정숫값이 될 수 있음


1
2
3
4
c = Counter()                           # a new, empty counter
c = Counter('gallahad')                 # a new counter from an iterable
c = Counter({'red': 4, 'blue': 2})      # a new counter from a mapping
c = Counter(cats=4, dogs=8)             # a new counter from keyword args


1
2
c = Counter(['eggs', 'ham'])
c['bacon']  # 0                         # count of a missing element is zero


1
2
3
4
완전히 제거하려면 del 사용

c['sausage'] = 0                        # counter entry with a zero count
del c['sausage']                        # del actually removes the entry



Counter methods

elements()
반복되는 요소에 대한 이터레이터를 만나는 순서대로 반환.
요소의 개수가 1보다 작으면 무시.
1
2
3
4
# ex)

>> c = Counter(a=4, b=2, c=0, d=-2)
>> sorted(c.elements()) # ['a', 'a', 'a', 'a', 'b', 'b']


most_common(n)
n개의 최빈값을 순서대로 나열
n이 생략되거나 n=None이면 모든 요소 반환
개수가 같은 요소는 처음 발견된(또는 입력된) 순서를 유지함.


1
2
3
# ex)
>> Counter('abracadabra').most_common(3)
>> [('a', 5), ('b', 2), ('r', 2)]


substract(iterable-or-mapping)
iterable이나 다른 mapping에서 온 요소에 대해서 같은 요소끼리의 개수를 뺌.


1
2
3
4
>> c = Counter(a=4, b=2, c=0, d=-2)
>> d = Counter(a=1, b=2, c=3, d=4)
>> c.subtract(d)
>> c # Counter({'a': 3, 'b': 0, 'c': -3, 'd': -6})


total()
개수 총합 반환.


1
2
>> c = Counter(a=10, b=5, c=0)
>> c.total() # 15






binascii



Link
docs.python.org/ko/3/library/binascii.html


  • binascii.a2b_hex(hexstr) or binascii.unhexlify(hexstr) : hex to string
    • hexstr 인자는 짝수개의 16진수 값으로 int가 아닌 bytes, buffer or ascii 의 형태여야 함.
    • 변수에 저장하고자 하면 str(binascii.unhexlify(hexstr), 'ascii')로 저장하면 됨.






threading



Link
docs.python.org/ko/3/library/threading.html







This post is licensed under CC BY 4.0 by the author.