멋쟁이 사자처럼/그 외
Python _ 'map( )' 함수 이해하기
니츄
2023. 1. 5. 16:49
* map( ) 함수의 기본 문법
: map ( function , iterable )
-function : 함수
-iterable : 반복 가능한 자료형 (list, tuple 등)
=> 즉, map ( 적용시킬 함수 , 적용할 값들)
* map( ) 함수를 사용했을 때와 사용하지 않았을 때의 코드 비교하기
: 우리가족 나이 list에 값을 하나씩 더해서 올해 나이 list를 만드는 작업.
myFamily = [58, 54, 29, 26]
# 1. for문 이용하기
result1 = []
for val in myFamily:
result1.append(val +1)
print(f'result1 : {result1}')
# 2. map( )함수 이용하기
def add_one(n):
return n + 1
result2 = list(map(add_one, myFamily))
print(f'result2 : {result2}')
result1 : [59, 55, 30, 27]
result2 : [59, 55, 30, 27]
1. for문 사용 : 하나하나 리스트 요소에 접근하여 계산함, 또 append 해주어야함.
2. map()사용: 요소에 적용할 함수 하나만 넘겨주면 자동으로 리스트를 함수에 적용함. 그걸 list로 형변환만 하면 됨.
* map( )함수 Quiz 다시 풀어보기
: map( ) 함수 직접 구현해보기
# 문제
names1 = ['kim python(23)', 'lee notebook(32)', 'kim macbook(47)']
names2 = ['kim py(33)', 'lee note(52)', 'kim mac(87)']
def ages(*args):
return [data[:-3] + str(int(data[-3:-1]) // 10 * 10) + ')' for data in args]
def map_func():
# TO DO
솔직히 못 풀겠다.
내가 이해한건 def ages 함수 한 줄 뿐..
# 강사님 풀이
names1 = ['kim python(23)', 'lee notebook(32)', 'kim macbook(47)']
names2 = ['kim py(33)', 'lee note(52)', 'kim book(87)']
def ages1(data):
return data[:-3] + str(int(data[-3:-1]) // 10 * 10) + ')'
def ages2(*args):
return [data[:-3] + str(int(data[-3:-1]) // 10 * 10) + ')' for data in args]
def map_func(func, *args):
return [func(value) for value in args[0]]
print(map_func(ages1, names1))
def map_func(func, *args):
# print(args)
result = []
for data in zip(*args): # zip(names1, names2)
# print(data)
result.append([func(value)[0] for value in data])
return result
print(map_func(ages2, names1, names2))
['kim python(20)', 'lee notebook(30)', 'kim macbook(40)']
[['kim python(20)', 'kim py(30)'], ['lee notebook(30)', 'lee note(50)'], ['kim macbook(40)', 'kim book(80)']]
너무 어려웡.. 오늘 강의시간 끝나면 울어야징