공부/Python

Python/unpacking, lambda 함수, map

Chelsey 2022. 2. 11. 01:31
728x90

unpacking

변수에 저장되어 있는 데이터를 풀어서, 여러개의 변수에 나눠서 저장한다.

<-> packing : 여러개의 데이터를 묶어서 변수1개에 저장한다.

# unpacking
x=[1,2,3]
print(*x)

num=(1,2,3,4,5)
a,b,_,d,e=num
a #1

x,y,*z=num
z # 3,4,5

# 세개의 인자를 넘겨야하는 경우 세개의 요소가 있어도 하나의 리스트임을 인지해야한다!!!
def dString(year, month, day):
	return str(year)+"."+str(month)+"."+str(day)
dString([2022,1,11]) # 2022,1,11 이라는 인자 세개가 아니라 하나의 리스트로 넘어가서 error 발생
dString(*[2022,1,11]) # unpacking해서 넘기면 error 안남

lambda function

def 와 같은 함수 정의 방법이지만, def보다 좀 더 간단한 기능의 함수를 정의할 때 사용하건, def를 사용하지 못할 때 사용한다.

간단한 함수라 변수에 대입하지 않는 경우가 있는데 이 땐 익명함수라고 한다.

def sum(a,b):
	return a+b

# 위 함수를 lambda식 표현하면 
sum=lambda a,b:a+b
(lambda a,b:a+b)(5,10) # 인수갯수 맞아야함
lambda 매개변수(들):원하는식

값이 정해진 변수 사용방법

y=10  # 함수 밖에서 초기화
(lambda x:x+y)(5)

map

여러줄로 써야 함수를 적용할 수 있는 것을 좀 더 간단한 코드만으로도 적용할 수 있다.

def add(a):
	...

map(add, x)
# x를 add함수 적용

map(lambda a:a+1, x)
# x를 lambda에 정의된 함수로 적용

if 조건문 활용

식 if 조건문 else 식
식 if 조건문 else 식2 if 조건문 else 식3

map(lambda x:str(x) if x%2==0 else x, x)
728x90