IT_developers

Python 개념 및 실습 - 함수(2) 본문

Python

Python 개념 및 실습 - 함수(2)

developers developing 2022. 9. 8. 17:00

람다(Lambda) 함수

  • 단일문으로 표현 되는 익명함수
  • 코드 상에서 한 번만 사용되는 기능이 있을 때 굳이 함수로 만들지 않고 1회성으로 만들어서 사용

 

def square(x):
    return x**2


print(square(5))
 

# 람다식 변형

square = lambda x: x**2
print(type(square))
print(square(5))
def add(x, y):
    return x + y
 
print(add(15, 2))
 

# 람다식 변형

add = lambda x, y: x + y
print(add(15, 2))

 

리스트 구조

# 문자의 길이가 짧은 순서대로 정렬하고 싶음

def str_len(s):
    return len(s)

strings = ["bob", "charles", "alexander3", "teddy"]
 
 
strings.sort() # 오름차순 정렬 후 출력
# 괄호안에 바로 람다식 입력 가능
strings.sort(key=lambda s: len(s))
print(strings)

 

filter, map, reduce : 함수형 프로그래밍

리스트를 넘겨받아 짝수만 모아서 새로운 리스트로 반환

list1 = [1, 2, 3, 6, 8, 9
even_list = []  # 새로운 리스트 even_list = list()


def even(list1):
    for i in list1:
        if i % 2 == 0:
            even_list.append(i)


even(list1)
print(even_list)


def even(n):
    return n % 2 == 0


filter() : 특정 조건을 가지고 있는 함수를 담음

print(list(filter(even, list1)))
 

# 람다직접입력

print(list(filter(lambda n: n % 2 == 0, list1)))

 

 

# 리스트를 받아 제곱을 한 숫자로 새로운 리스트 생성

nums = [1, 2, 3, 6, 8, 10, 11, 12, 13, 14, 15]


def mul(n):
    return n**2


print(list(map(mul, nums)))
print(list(map(lambda n: n**2, nums))) # 람다식

 

# 주어진 리스트에서 3의 배수만 문자열로 변경해서 돌려받기

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
num_result = []
 
def str_check(nums):
    for i in nums:
        if i % 3 == 0:
            num_result.append(str(i))
        else:
            num_result.append(i)


def str_check(num):
    if num % 3 == 0:
        return str(num)
    else:
        return num


num_result = list(map(str_check, nums))
print(num_result)
 
num_result = list(map(lambda num: str(num) if num % 3 == 0 else num, nums))
print(num_result)  

Comments