lambda
함수를 한줄에 정의하고 사용만 한다.코드의 간결함 메모리의 절약
람다 함수는 정의와 동시에 사용할 수 있음
lambda 매개변수 : 리턴값
print((lambda x : x**2)(2))
4
제곱을 해주는 함수를 정의하고 바로 숫자 2를 넣어 리턴값을 돌려받음
lambda 매개변수 : 리턴값 if 조건 else 리턴값
nums = list(range(-4,4))
print(nums)
print(list(map(lambda x : '양수' if x >= 0 else '음수',nums)))
[-4, -3, -2, -1, 0, 1, 2, 3]
['음수', '음수', '음수', '음수', '양수', '양수', '양수', '양수']
map
리스트데이터의 각 원소에 함수를 적용하고 싶을 때 사용
map(각원소에 적용할 함수, 리스트 )
각 과일이름의 길이를 리턴
fruits = ['사과','바나나','포도','파인애플','귤']
print(map(len,fruits))
print(list(map(len,fruits)))
<map object at 0x0000013FDE88A7C0>
[2, 3, 2, 4, 1]
맵 함수만 적용하면 맵형태의 객체가 리턴되므로
리스트형태로 명시적 형변환을 실시
names = ['이우현','이종수','이병군','김나명']
list(map(lambda x : x[-2:],names))
['우현', '종수', '병군', '나명']
람다함수를 이용도 가능
list_2 = [[1,23,4],[21,24624,12321],[4718,82,29,300],[32,365,33]]
print(list(map(sum,list_2)))
print([sum(i) for i in list_2 ])
[28, 36966, 5129, 430]
[28, 36966, 5129, 430]
리스트 컴프리헨션과 같은결과
import pandas as pd
print(series_)
print(series_.map(lambda x : x**2))
print(series_**2)
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
dtype: int64
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
dtype: int64
판다스 시리즈객체에 대해도 적용가능
filter
리스트에서 질의한 부분이 참인 경우만 리턴하는 함수
map과 같이 list로 명시적형변환 필요
시리즈에는 x
print(list_)
print('-'*30)
print(series_)
print('-'*30)
print(list(filter(lambda x: x>2,list_)))
print('-'*30)
print(series_[series_ > 2])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
------------------------------
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
------------------------------
[3, 4, 5, 6, 7, 8, 9]
------------------------------
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
시리즈에는 인덱싱으로 적용
'python 기초' 카테고리의 다른 글
[python 기초] 변수명에 format 사용 변수명 for문 (0) | 2021.12.06 |
---|---|
[python기초] tqdm for문 예상속도, time (0) | 2021.12.06 |
[ python 기초 ] 딕셔너리 dictionary (2) | 2021.08.19 |
[ python 기초 ] 셋 set (0) | 2021.08.19 |
[ python 기초 ] 튜플 tuple (0) | 2021.08.19 |