lambda [parameters] : expression (표현식)
파이썬에는 람다(lambda)라는 이름이 없는 inline 함수가 있다.
비교적으로 간단한 함수에 대하여 lambda로 만들어서 함수 호출 시 필요할 때 전달해주는 형태로 많이 사용한다.
주어진 함수를 먼저 보도록하자.
def get_square_num(number):
return number ** 2
print(get_square_num(2))
넘겨받은 숫자를 제곱하여 반환하는 get_square_num 함수를 구현해보았다.
이를 람다(lambda)로 변환하였을 경우 이렇게 된다.
a = lambda x: x ** 2
print(a(2))
파이썬은 함수 자체를 변수로 취급하기때문에 간단하게 구현할 수 있다.
주어진 라인을 해석하자면
a라는 변수에 lambda 함수를 저장하겠다. lambda 함수는 x라는 변수를 가지고 있으며 이 x라는 변수를 제곱하겠다.
a함수에 2를 넣어 출력하겠다.
여기서 변수는 반드시 x라고 쓰지 않아도 되고 변수는 1개 이상일 수도 있다.
a = lambda x, y: x * y
print(a(2, 3))
다음과 같은 함수도 구현이 가능하다.
이제 실제로 어떤식으로 이 함수를 사용 할 수 있는지 보도록하자.
data = """height,weight,label
140,45,normal
145, 72, fat
150,61,fat
137,56,fat
192,48,thin
175,77,fat"""
csv 파일을 읽어온 data가 있다고 하자.
이를 각 line별로 list에 저장하는 함수를 만들어보겠다.
data2 = data.split('\n')
data3 = []
for a in range(len(data2)):
temp = list(map(lambda x: float(x) if x.isdigit() else x.strip(), data2[a].split(',')))
data3.append(temp)
print(data3)
이 코드는 temp 부분만 해석해보겠다.
각 라인별 데이터를 , 단위로 map 해서 1개의 항목씩을 가져오겠다.
여기서 함수(lambda) 를 통해 각 항목을 분류하겠다. 만약 x가 숫자라면 float 타입으로 가져오고, 아니라면 x.strip()으로 데이터를 가져오겠다.
최종적으로 data3 에는 2차원 list가 저장되는 것을 확인할 수 있다.
이 코드의 문제점은 72의 경우 isdigit 에 걸리지 않기때문에 float타입으로 저장되지 않고 저장된다는 문제점이 있다.
'파이썬 > 문법' 카테고리의 다른 글
Python, MySQL 연결 (0) | 2022.09.23 |
---|---|
[파이썬] List Comprehension (0) | 2022.07.24 |
[Python] filter란? (0) | 2022.06.27 |