Programming

Python 리스트형 - Lamda 함수를 이용한 리스트 활용-람다식

IT오이시이 2023. 10. 12. 05:04
728x90

 

Python 리스트형 - Lamda 함수를 이용한 리스트 활용

 
 

람다 함수 (lambda function)  ?

람다(lambda) 함수는 일반적인 함수 선언과는 달리 이름이 없고 한 줄로 표현됩니다. 주로 간단한 연산이나 함수를 인자로 받아 처리할 때 사용됩니다. 람다 함수는 익명 함수로 함축적인 문장으로 간단한 연산이나 변환에 적합합니다. 
람다 함수를 사용하면 간단한 반복과 데이터 처리를 쉽게 할수 있습니다. 그러나 람다 함수는 기능이 함축적이기 때문에 이해하거나 사용하기 복잡하고 까다롭습니다. 리스트 처리를 위해서 간단한 방안을 찾아 람다 함수를 정리해 봅니다.
 

람다 함수의 사용법

# 람다함수의 선언

lambda arguments: expression

# arguments는 함수의 입력 매개변수이고
# expression은 해당 매개변수를 이용한 연산입니다.



square = lambda x: x**2
print(square(5))
# 출력: 25

# * 람다 함수는 lambda 키워드로 시작하고, 매개변수 x를 받아 x**2를 반환하는 함수를 정의

 
람다 함수는 주로 map(), filter(), sorted()와 같은 함수와 함께 사용됩니다. 예를 들어, 리스트의 각 요소를 제곱하는 경우
 

1. map() 함수와 람다 함수:

map() 함수는 list 형 변수와 같이 순회 가능한(iterable) 객체의 모든 요소에 적용하여 새로운 iterable을 반환합니다. 

# map을 이용한 lamda

numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))

print(squared_numbers)
# 출력: [1, 4, 9, 16, 25]

 

2. filter() 함수와 람다 함수:


filter() 함수는 주어진 함수로 걸러진 요소들로 이루어진 iterable을 반환합니다. 람다 함수를 filter() 함수와 함께 사용하여 특정 조건을 만족하는 요소만 남길 수 있습니다.

# filter를 이용한 lamda

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))

print(even_numbers)
# 출력: [2, 4, 6, 8, 10]

 

3. sorted() 함수와 람다 함수:


sorted() 함수는 iterable의 요소를 정렬한 리스트를 반환합니다. 람다 함수를 sorted() 함수와 함께 사용하여 정렬 기준을 지정할 수 있습니다.

# sorted를 이용한 람다

words = ['apple', 'banana', 'orange', 'kiwi']
sorted_words = sorted(words, key=lambda x: len(x))

print(sorted_words)
# 출력: ['kiwi', 'apple', 'banana', 'orange']

 


람다함수를 이용한 리스트 활용

 
람다 함수를 이용하면 데이터를 쉽고 간단하게 처리가 가능하다 그러나 람다함수는 복잡할 수록 가독성이 떨어지므로 복잡한 식보다는 간단하게 사용하는 것이 현명하다. (다른 사람이 유지보수 하려면 복잡하게 구성하기 보다 간단하게 만들어야 하고, 간단한 것보다는 설명이 쉽게 가능하도록 하면  나중에 유지보수가 쉬워진다는 관점을 반드시 숙고하여야 한다는것이다.)
 

1. 리스트 내에서 람다 함수 사용하기:

# python lamda 를 이용한 리스트 만들기


landa_list = list(map(lambda x: f"a{x}", range(1, 6)))
print(landa_list)
# 출력 : ['a1', 'a2', 'a3', 'a4', 'a5']


squared_numbers = list(map(lambda x: x**2, range(1, 6)))
print(squared_numbers)
# 출력 : [1, 4, 9, 16, 25]
lambda x: f"a{x}", range(1, 6) :  f-string을 이용하여 'a' + '1'  ~ 'a' + 6 까지 반복하여 문자를 만든다
map ( 'a1', ~~ 'a6' ) 으로 리스트 자료를 만든다

 

2. 조건에 따라 필터링하기:

numbers = [1, 2, 3, 4, 5]

even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)
# 출력: [2, 4]

 

3. 람다 함수를 이용한 정렬

words = ['apple', 'banana', 'orange', 'kiwi']

sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)
# 출력: ['kiwi', 'apple', 'banana', 'orange']

 

4. 다수의 인자 사용하기:

combine_lists = lambda a, b: a + b

result = combine_lists([1, 2, 3], [4, 5, 6])

print(result)
# 출력: [1, 2, 3, 4, 5, 6]

 

5. 람다 함수를 변수에 할당하기:

multiply = lambda x, y: x * y
result = multiply(3, 4)

print(result)
# 출력: 12

 

728x90
반응형