Python 내장 함수 총망라 및 람다 표현식 상세 설명

람다 표현식과 익명 함수의 본질

전통적인 함수 정의 방식인 def를 사용하지 않고도 실행 가능한 함수 객체를 생성할 수 있는 문법이 람다식입니다. 이름이 지정되지 않아 메모리에 상주하지 않고 필요할 때만 생성되어 사용 후 폐기되는 특성이 있습니다.

# 기존 함수 정의 방식
def calculate_sum(x, y):
    return x + y

# 람다식을 통한 단순 대체
add_operation = lambda x, y: x + y
print(add_operation(5, 10))  # 출력: 15

이러한 형태의 코드는 주로 매개변수로 다른 함수를 인자로 전달해야 하는 고차 함수(High-order Function) 환경에서 빈번하게 활용됩니다. 복잡한 로직보다는 단일 표현식으로 반환 값이 결정되는 단순 작업에 적합합니다.


고급 데이터 처리 함수 군

파이썬의 함수형 프로그래밍 요소와 밀접한 내장 함수들은 반복 가능한 객체 (Iterable) 를 효율적으로 변환하거나 필터링하는 데 사용됩니다.

map: 데이터 매핑

반복 가능한 객체의 모든 원소에 특정 연산을 적용하여 새로운 결과를 생성합니다.

data_nums = [1, 2, 3, 4, 5]
# 각 항목을 제곱하여 새 리스트로 변환
squared_data = list(map(lambda n: n * n, data_nums))
print(squared_data)  # 결과: [1, 4, 9, 16, 25]

filter: 조건부 걸러내기

주어진 조건식을 만족하는 원소들만을 선별하여 추출합니다.

raw_list = [10, 25, 30, 45, 55]
# 짝수만 남기는 예제
even_only = list(filter(lambda x: x % 2 == 0, raw_list))
print(even_only)  # 결과: [10, 30]

reduce: 누적 연산 (모듈 별도)

리스트의 요소를 순차적으로 두 개씩 묶어 하나의 값으로 축소합니다. 최근 버전에서는 표준 라이브러리 밖으로 나가므로 임포트가 필요합니다.

from functools import reduce

sequence = [2, 3, 4]
# 모든 값을 곱셈하여 최종 합계 도출
total_product = reduce(lambda acc, val: acc * val, sequence)
print(total_product)  # 결과: 24

zip: 다중 시퀀스 결합

여러 개의 iterable 을 같은 위치의 원소끼리 묶어 튜플 형태로 조합합니다.

names = ['Alice', 'Bob']
scores = [95, 88]
paired_data = list(zip(names, scores))
print(paired_data)  # 결과: [('Alice', 95), ('Bob', 88)]

sorted: 정렬 도구

데이터를 정렬하여 새로운 리스트를 반환하며, key 파라미터를 이용해 복잡한 기준 정렬이 가능합니다.

users = [{'name': 'Tom', 'age': 30}, {'name': 'Jenny', 'age': 25}]
# 나이가 어릴수록 앞에 오도록 정렬
ordered_users = sorted(users, key=lambda u: u['age'])
print(ordered_users)

최대·최소값 찾기 (max/min)

기본 비교 외에 키(Key) 함수를 지정해 간접적인 값을 기준으로 최대/최소를 찾을 수 있습니다.

prices = {
    'item_A': 5000,
    'item_B': 12000,
    'item_C': 3000
}
# 가격을 기준으로 가장 비싼 상품의 이름 (키) 을 찾음
most_expensive = max(prices, key=lambda k: prices[k])
print(most_expensive)  # 결과: item_B

유용한 유틸리티 함수 모음

개발 과정에서 자주 접하는 기본 타입 조작이나 논리 판단에 쓰이는 함수들을 정리했습니다.

  • abs(): 숫자의 절대값 계산. (abs(-10) → 10)
  • round(): 반올림하여 소숫점 자릿수를 조절하거나 정수로 변경. (round(3.14159, 2) → 3.14)
  • pow(a, b): 지수 연산 수행. (pow(2, 3) → 8, 2**3 와 동일)
  • sum(): 숫자 시퀀스의 총합 계산. (sum([1, 2, 3]) → 6)
  • divmod(a, b): 나눗셈 결과 (몫, 나머지) 를 튜플로 반환. (divmod(10, 3) → (3, 1))

데이터 형식 전환 및 인코딩

# 문자열을 바이트로 인코딩
text_str = "Hello"
byte_data = bytes(text_str, encoding='utf-8')

# ASCII 코드 상호 변환
char_a = chr(65)   # 'A'
code_z = ord('Z')  # 90

논리적 단축 평가

시퀀스 내부의 모든 값이 참인지, 혹은 하나라도 참인지를 빠르게 판단합니다.

values = [True, True, False]
all_true = all(values)      # False (하나라도 거짓이면 F)
any_true = any(values)      # True (하나라도 참이면 T)

객체 속성 및 실행 가능성 확인

동적으로 객체의 종류나 호출 가능 여부를 검증할 때 유용합니다.

check_var = 100
func_ref = len

print(isinstance(check_var, int))   # True: 타입 검사
print(callable(func_ref))           # True: 호출 가능한지 검사
print(callable("string"))           # False: 일반 변수는 호출 불가

디버깅 및 동적 실행

dir() 는 객체가 가진 멤버 변수나 메서드 목록을 조회하는 데 사용합니다. eval()exec() 는 문자열 형태의 코드를 실제로 실행하는 강력한 도구이나 보안 위험이 따르니 주의해야 합니다.

s_code = "x = 10; y = 20; print(x+y)"
eval("print(2 * 3)")  # 문자열 코드의 실행 결과 리턴

hash() 함수는 객체를 고정된 크기의 정수로 변환하여 해시맵 등에 활용되며, 동일한 객체는 세션 내에서 동일한 값을 가집니다.

enumerate() 는 반복 가능한 데이터에 자동으로 인덱스를 부여하여 함께 처리할 수 있게 해줍니다.

items = ['Apple', 'Banana', 'Cherry']
indexed_items = list(enumerate(items, start=1))
# 결과: [(1, 'Apple'), (2, 'Banana'), (3, 'Cherry')]

태그: python lambda built-in-function functional-programming data-transformation

8월 7일 09:20에 게시됨