1. Python 내장 함수
Python은 다양한 작업을 쉽게 수행할 수 있도록 많은 내장 함수를 제공합니다. 대표적인 예로 print()
, len()
, sorted()
와 같은 함수들이 있습니다. 이 함수들은 기본적인 작업을 편리하게 수행할 수 있게 해줍니다.
Python 내장 함수 주요 예시
Python 내장 함수는 별도의 모듈 임포트 없이도 사용 가능한 도구들입니다. 다음은 자주 사용되는 몇 가지 함수와 그 활용 예시입니다.
print()
출력을 위한 함수로, 콘솔에 값을 출력합니다.
print("Hello, Python!") # Hello, Python!
len()
데이터의 길이나 크기를 반환합니다.
data = [1, 2, 3, 4]
print(len(data)) # 4
sorted()
리스트나 반복 가능한 객체를 정렬하여 새 리스트를 반환합니다.
data = [3, 1, 4, 1, 5]
sorted_data = sorted(data)
print(sorted_data) # [1, 1, 3, 4, 5]
sum()
숫자들의 합을 계산합니다.
data = [1, 2, 3, 4]
print(sum(data)) # 10
max() / min()
최대값과 최소값을 반환합니다.
data = [10, 20, 30]
print(max(data)) # 30
print(min(data)) # 10
abs()
숫자의 절댓값을 반환합니다.
number = -42
print(abs(number)) # 42
2. itertools
: 반복과 조합의 강력한 도구
itertools
모듈은 반복 가능한 데이터 처리를 위한 다양한 함수들을 제공합니다. 주로 순열, 조합, Cartesian Product 등을 효율적으로 생성할 수 있습니다.
주요 메서드와 예시
itertools.product()
: Cartesian product(직접곱)를 생성합니다.from itertools import product data = [1, 2] result = list(product(data, repeat=2)) print(result) # [(1, 1), (1, 2), (2, 1), (2, 2)]
itertools.permutations()
: 주어진 데이터의 순열을 생성합니다.from itertools import permutations data = [1, 2, 3] result = list(permutations(data, 2)) print(result) # [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
itertools.combinations()
: 주어진 데이터의 조합을 생성합니다.from itertools import combinations data = [1, 2, 3] result = list(combinations(data, 2)) print(result) # [(1, 2), (1, 3), (2, 3)]
itertools.chain()
: 여러 반복 가능한 객체를 하나로 연결합니다.from itertools import chain result = list(chain([1, 2], ['A', 'B'])) print(result) # [1, 2, 'A', 'B']
-
더보기
itertools.chain()
은 여러 이터러블(iterable)을 순서대로 연결하여 하나의 연속된 이터러블처럼 동작하는 이터레이터를 생성하는 Python의itertools
모듈 함수이다.사용 방법
import itertools # 여러 이터러블을 연결 result = itertools.chain(iterable1, iterable2, iterable3, ...)
주요 특징
- 각 이터러블을 순서대로 순회하면서 값을 반환함.
- 원래의 이터러블은 변경되지 않음.
- 메모리를 효율적으로 사용함(모든 데이터를 메모리에 저장하지 않음).
예제
1. 리스트 연결
import itertools list1 = [1, 2, 3] list2 = [4, 5] list3 = [6, 7, 8] # 여러 리스트를 하나의 이터레이터로 연결 result = itertools.chain(list1, list2, list3) # 결과 출력 print(list(result)) # [1, 2, 3, 4, 5, 6, 7, 8]
2. 다른 타입의 이터러블 연결
import itertools tuple1 = (1, 2) set1 = {3, 4} range1 = range(5, 7) # 여러 타입의 이터러블 연결 result = itertools.chain(tuple1, set1, range1) print(list(result)) # [1, 2, 3, 4, 5, 6] (set은 순서가 다를 수 있음)
3.
itertools.chain.from_iterable()
chain.from_iterable()
은 중첩된 이터러블을 평탄화(flatten)하는 데 유용하다.import itertools nested = [[1, 2], [3, 4], [5, 6]] # 중첩된 리스트를 평탄화 result = itertools.chain.from_iterable(nested) print(list(result)) # [1, 2, 3, 4, 5, 6]
유용한 응용
- 데이터 스트림 연결: 여러 데이터 소스를 하나로 결합.
- 중첩 리스트 처리: 이중 리스트를 단일 리스트로 평탄화.
- 다른 이터러블 처리: 리스트, 튜플, 세트 등 다양한 이터러블을 하나로 연결.
itertools.chain()
은 간결하고 메모리 효율적인 코드 작성을 돕는 강력한 도구이다.
3. heapq
: 힙 자료구조
heapq
모듈은 힙 자료구조를 구현하는 도구입니다. 주로 우선순위 큐 구현에 사용되며, 최소 힙을 기본으로 제공합니다.
주요 메서드와 예시
heapq.heapify()
: 리스트를 힙으로 변환합니다.import heapq data = [5, 2, 9, 1] heapq.heapify(data) print(data) # [1, 2, 9, 5]
heapq.heappop()
: 힙에서 최소값을 제거하고 반환합니다.min_value = heapq.heappop(data) print(min_value) # 1
heapq.heappush()
: 힙에 새 요소를 추가합니다.heapq.heappush(data, 3) print(data) # [2, 3, 9, 5]
heapq.nlargest()
/heapq.nsmallest()
: 가장 큰/작은 요소n
개를 반환합니다.largest = heapq.nlargest(2, data) print(largest) # [9, 5]
4. bisect
: 이진 탐색
bisect
모듈은 정렬된 리스트에서 데이터를 효율적으로 삽입하거나 검색하기 위한 기능을 제공합니다.
주요 메서드와 예시
bisect.bisect()
: 정렬된 리스트에 값을 삽입할 위치를 반환합니다.import bisect data = [1, 3, 4, 7] position = bisect.bisect(data, 5) print(position) # 3
bisect.insort()
: 정렬된 리스트에 값을 올바른 위치에 삽입합니다.bisect.insort(data, 5) print(data) # [1, 3, 4, 5, 7]
5. collections
: 고급 자료구조
collections
모듈은 기본 Python 자료구조를 확장한 도구들을 제공합니다. 예를 들어 deque
는 빠른 삽입과 삭제가 가능한 양방향 큐를 제공하며, Counter
는 데이터의 빈도를 쉽게 계산할 수 있습니다.
주요 클래스와 예시
deque
: 양방향 큐로, 빠른 삽입과 삭제가 가능합니다.from collections import deque dq = deque([1, 2, 3]) dq.append(4) dq.appendleft(0) print(dq) # deque([0, 1, 2, 3, 4])
Counter
: 요소의 빈도를 계산합니다.from collections import Counter text = "hello world" counter = Counter(text) print(counter) # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
defaultdict
: 기본값을 제공하는 딕셔너리입니다.from collections import defaultdict dd = defaultdict(int) dd['key1'] += 1 print(dd) # defaultdict(<class 'int'>, {'key1': 1})
6. math
: 필수 수학 기능
math
모듈은 팩토리얼, 최대공약수(GCD), 삼각함수, 상수(π
등)와 같은 수학 계산에 필수적인 기능들을 제공합니다.
주요 메서드와 예시
math.factorial()
: 주어진 숫자의 팩토리얼을 계산합니다.import math factorial = math.factorial(5) print(factorial) # 120
math.gcd()
: 두 숫자의 최대공약수를 반환합니다.gcd = math.gcd(48, 18) print(gcd) # 6
math.sqrt()
: 제곱근을 계산합니다.sqrt_value = math.sqrt(16) print(sqrt_value) # 4.0
math.pi
: 원주율 π 값을 제공합니다.print(math.pi) # 3.141592653589793