Python은 R처럼 벡터연산이 되지 않는다
list+int 연산의 오류라 list+list는 가능할 줄 알았는데, 불가능하다.
lambda 라는 기법을 통해 사용자 정의함수 생성
- 간단한 인풋과 아웃풋 처리
문법 : >>> lambda input : output
-IN Python-
f1 = lambda x : x+10
- IN R-
f1 <- function(x) {
return(x+10)
}
적용함수
- apply : 행별, 컬럼별 연산(그룹연산)
- map : 원소별 연산( in R = sapply )
map(func, iterrables) --> map object
원소별 적용을 하기 위해 map 함수 사용
but, 데이터내에만 저장. 바로 출력되지 않으므로 출력 형식 지정
list()로 형식을 지정해주니 의도한대로 출력된다.
map 사용과 미사용의 차이
형 변환 함수
int : 숫자로 변경할 수 있는 문자를 숫자형으로 변경
str : 숫자, 날짜 등을 문자형으로 변경
l1리스트를 [01,02,03] 형식으로 변경하기
-> 포맷 변환 사용
-> 형 변환 사용
※ 실습문제
#다음의 리스트를 생성
l1 = [1,2,3,4]
l2 = [10,20,30,40]
l3 = [1.567, 2.456, 5.342, 5.534]
1. l1을 소숫점 둘째자리로 표현
f1 = lambda x:"%.2f" % x
list(map(f1,l1))
['1.00', '2.00', '3.00', '4.00']
※ 출력결과를 int로 바꾸는건 차후 학습예정
2. l3을 정수자리로 표현(버림)
import math
f2 = lambda x:math.trunc(x)
list(map(f2,l3))
[1, 2, 5, 5]
3. l1 + l2 계산
f3 = lambda x,y: x+y
list(map(f3,l1,l2))
[11, 22, 33, 44]
4. l2의 l1승 출력, 10^1, 20^2, 30^3, 40^4
f4 = lambda x,y: x ** y
list(map(f4,l2,l1))
[10, 400, 27000, 2560000]
'Python' 카테고리의 다른 글
Python 설치 & 기초 조작 (0) | 2019.01.22 |
---|