CS/기타

자주 사용하는 파이썬 함수 정리

코딩하는 포메라니안 2021. 8. 25. 00:46

1. collections 라이브러리 함수

 

1) Counter

- 리스트에서 각 요소별 개수를 사전형으로 반환

- 뺄셈 연산 가능

from collections import Counter

counter = Counter(['red', 'blue', 'red', 'green', 'blue', 'blue'])

print(counter['blue'])#'blue'가 등장한 횟수 출력
print(dict(counter))
#3
#{'red': 2, 'blue': 3, 'green': 1}

뺄셈 연산을 활용하는 방법은 아래 발행 글의 방법 2)를 참고

 

[Python] 완주하지 못한 선수

1. 문제 2. 풀이 과정 방법 1) 아스키코드를 기준으로 정렬한 후, 앞에서부터 순차 탐색한다. def solution(participant, completion): participant.sort() completion.sort() answer = '' for i in range(len(co..

yerinpy73.tistory.com

 

2) deque

- 큐가 필요할 때 사용

from collections import deque

queue = deque()

queue.append(5)
queue.append(2)
queue.append(3)
queue.popleft() #index = 0인 데이터 꺼내기
queue.append(1)

print(queue)#먼저 들어온 순서대로 출력 deque([2, 3, 1])
queue.reverse()
print(queue)#나중에 들어온 원소부터 출력 deque([1, 3, 2])

+) 리스트를 이용한 큐

queue = []

queue.append(1)
queue.append(2)
queue.pop(0) #맨 앞의 데이터를 꺼내고 반환
queue.append(3)

print(queue)
#[2, 3]

 

3) defaultdict

- default값을 지정한 dict를 생성한다.

- 이 함수를 사용하지 않으면, 사전에 해당 key값이 있는지 확인하고 없으면 새로 할당해주어야 한다.

from collections import defaultdict

dict1 = defaultdict(int)
print(dict1['key'])
#default로 0이 출력

dict2 = defaultdict(list)
print(dict2['key'])
#default로 [] 빈 리스트 출력

dict3 = defaultdict(set)
print(dict3['key'])
#default로 {} 빈 집합 출력

#리스트를 기준으로 설명
arr = [["test1", "국어"], ["test1", "영어"], ["test2", "수학"]]
#원하는 결과
#{'test1': ['국어', '영어'], 'test2': ['수학']}

#사용할 때
book1 = defaultdict(list)
for s1, s2 in arr:
  book1[s1].append(s2)
print(book1)

#사용하지 않을 때
book2 = dict()
for s1, s2 in arr:
  if s1 not in book2:
    book2[s1] = [s2]
  else:
    book2[s1].append(s2)
print(book2)

 

 

2. itertools 라이브러리 함수

1) combinations

- 조합

from itertools import combinations

data = ['A', 'B', 'C']
result = list(combinations(data, 2)) #2개 뽑는 모든 조합
print(result)
#[('A', 'B'), ('A', 'C'), ('B', 'C')]

 

2) permutations

- 순열

from itertools import permutations

data = ['A', 'B', 'C']
result = list(permutations(data, 3))
print(result)
#[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]

 

 

 

3. functools 라이브러리 함수

1) reduce

- 여러 개의 데이터를 누적 집계하기 위해 사용

from functools import reduce
결과 = reduce(집계내는 함수(인자1: 중간 집계 결과 저장할 값, 인자2: 현재 값), 순환가능한 데이터, 집계초기값)

활용 방법은 아래의 발행 글의 방법 2)를 참고

 

[Python] 위장

1. 문제 2. 풀이 과정 방법 1) hash 자료구조를 이용해서 옷 종류별로 몇 개씩 있는지 count한 후, 특정 종류는 선택 안 할 경우도 있으니 각 종류별로 안 입을 경우를 1씩 더해서 조합의 개수를 count한

yerinpy73.tistory.com

 

 

 

4. 내장 함수

1) sorted

- 리스트를 정렬하여 반환

#sorted()
result = sorted([9, 1, 8, 5, 4])
reverse_result = sorted([9, 1, 8, 5, 4], reverse=True)

#sorted() with key
array = [('홍길동', 35), ('이순신', 75)]
result = sorted(array, key=lambda x: x[1], reverse=True)
print(result) #[('이순신', 75), ('홍길동', 35)]

 

2) enumerate

- 순서가 있는 자료형을 받아서 (인덱스, 해당 값)을 담은 enumerate 객체를 반환한다.

- 순서가 있는 자료형에는 list, set, tuple, dict, str이 있다.

data = enumerate((1, 2, 3))

for idx, value in data:
	print(f"{idx}번째는 {value}")

#아래 두 라인도 위와 동일한 결과
#data = enumerate({1, 2, 3})
#data = enumerate([1, 2, 3])

person = {'이름': '정수정', '나이': 28}
data = enumerate(person)
for idx, key in data:
	print(f"{idx}번째는 {key} : {person[key]}")
    
data = enumerate("문자열")
for idx, value in data:
	print(f"{idx}번째는 {value}")
#0번째는 문
#1번째는 자
#2번째는 열

#숫자를 1부터 시작하도록 하고 싶을 때
arr = [32, 20, 89]
for idx, x in enumerate(arr, start = 1):
  print(f"{idx} : {x}")
#1 : 32
#2 : 20
#3 : 89

 

3) any

- 하나라도 만족하면 True를 반환한다.

if any(1 < b for b in Q):
    print("리스트 Q에 있는 데이터 중에 1보다 큰 값이 하나라도 있다!")

 

 

 

5. 문자열 메서드

1) str.starswith("접두어")

- 특정 문자열로 시작하는지 확인하는 함수

test = "hellopython"
if test.startswith("hello"):
	print("yes")

 

2) str.join(배열)

-배열의 원소들을 문자열에 붙여주기

arr = ["hello", "hi", "nice"]
print(''.join(arr))
#hellohinice

 

 

6. 힙 모듈

1) heapq

- 최소 힙(min heap)을 제공한다.

- max heap을 쓰고 싶으면 값을 음수로 바꿔서 사용하면 된다.

import heapq

heap = []
heapq.heappush(heap, 3)
heapq.heappush(heap, 4)
heapq.heappush(heap, 2)
heapq.heappush(heap, 7)
heapq.heappop(heap)
print(heap)

#heapify : 주어진 배열을 min heap으로 만들기
arr = [3, 7, 1, 4, 6]
heapq.heapify(arr)
print(arr)

 

 

 

7. Numpy 패키지

1) 배열

- 리스트와의 차이점

  • 적은 메모리로 데이터를 빠르게 처리할 수 있다.
  • 모든 원소가 같은 자료형이어야 한다.
  • 원소의 개수를 바꿀 수 없다.
  • 벡터화 연산을 제공
import numpy
arr = [1, 2, 3]
arr2 = numpy.array(arr)

print(2*arr)
#[1, 2, 3, 1, 2, 3]

print(2*arr2)
#[2 4 6]
print(arr2 > 1)
#[False True True]

#인덱싱은 리스트와 동일
#슬라이싱
arr3 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
arr3 = numpy.array(arr3)
print(arr3[1, :])
#1번 행에, 전체 열
#[4 5 6]

 

8. 사전 메서드

1. get('key값', 'default값')

- key값에 해당하는 value를 반환

- key값이 없을 경우 default값을 반환

test_dict = {}
test_dict['a'] = 1
test_dict['b'] = 2

print(test_dict.get('a', 0)) #1
print(test_dict.get('c', 0)) #0

 

'CS > 기타' 카테고리의 다른 글

[IT지식] 머신러닝(기계학습)  (0) 2021.12.06
[IT지식] 빅데이터  (0) 2021.12.06
[IT지식] 블록체인  (0) 2021.12.01
[Python] REST API 사용법  (0) 2021.09.19
네이티브 앱, 모바일 웹앱, 하이브리드 앱  (0) 2021.06.22