
iterable을 첫 번째 인자로 들어온 function에 하나씩 집어넣어서 function을 수행하는 함수.input().split()의 결과가 문자열 리스트이기 때문에 map 함수를 사용할 수 있음 1️⃣ 주어진 리스트에 값을 각각 +1한 새로운 리스트 만들기
my_list = [1,2,3,4]
result_for = []
result_map = []
# for문 사용
for number in my_list:
result_for.append(number+1)
# map함수 사용
def add(number):
return number+1
result_map = list(map(add, my_list))
print(result_for) # [2,3,4,5]
print(result_map) # [2,3,4,5]
2️⃣ 리스트의 모든 요소 정수로 변환하기
arr_for = [1.2, 2.3, 3.4, 4.5]
arr_map = [1.2, 2.3, 3.4, 4.5]
# for문
for i in range(len(arr_for)):
arr_for[i] = int(arr_for[i])
# map함수
arr_map = list(map(int, arr_map))
print (arr_for) # [1,2,3,4]
print (arr_map) # [1,2,3,4]
def를 이용해 함수객체가 변수에 담기면 메모리에 올라가서 변수를 통해 자신이 호출되기를 기다리게됨 -> 메모리 낭비 return키워드 없이 자동으로 return해줌
1️⃣ def와 비교
# def키워드이용
def add2(x,y):
return x+y
print (add2(10,20)) # 30
# 람다 이용
# 람다함수도 객체이기 때문에 정의와 동시에 변수에 담을 수 있다.
n = (lambda x,y:x+y)(10,20)
print (n) # 30
2️⃣ 다른 함수와 함께 사용map,filter,sorted
>>> list(map(lambda x: x **3, range(5))) #3제곱
[0, 1, 8, 27, 64]
>>> list(filter(lambda x: x<8, range(10)))
[0, 1, 2, 3, 4, 5, 6, 7]
>>> list(filter(lambda x : x%2, range(20))) # 홀수만 반환
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
# filter는 참인 값만 반환하기 때문에 나머지가 0(=거짓)이면 반환하지 않음
#### 문자열 길이 공백 무시하고 정렬
def my_key(string):
return len(string.strip())
target = [' cats ', ' tiger ', ' dog', 'snake ']
print(sorted(target, key=my_key))
# [' dog', ' cats ', ' tiger ', 'snake ']
#### 람다 사용
target = [' cats ', ' tiger ', ' dog', 'snake ']
print(sorted(target, key=lambda x : len(x.strip())))
# [' dog', ' cats ', ' tiger ', 'snake ']
strip()을 이용하면 문자열에서 특정 문자를 제거함.📌sort 함수는
리스트명.sort( )형식으로 리스트형의 메소드 이며 리스트 원본값을 직접 수정함.
📌sorted 함수는sorted( 리스트명 )형식으로 내장 함수이며 리스트 원본 값은 그대로이고 정렬 값을 반환.
list외에도 Set, Dict 자료형으로 사용되는 컴프리헨션수식, 함수 적용
# 수식 적용
[i*10 for i in range(5)] # [0,10,20,30,40]
# 함수 적용
def test(x):
x = str(x)+'a'
return x
[test(i) for i in range(5)] # [0a,1a,2a,3a,4a]
조건문 사용
# 오른쪽에 if문 사용
[i for i in range(5) if i%2==0]
# 왼쪽에 if문 사용(else 같이 사용)
[i if i%2==0 else 'odd' for i in range(5)]
이중 for문 사용
# 리스트 생성 후 이중 for문
li=[]
for i in range(2):
for j in range(3):
li.append((i,j))
# 리스트 컴프리핸션
[(i,j) for i in range(2) for j in range(3)]
# [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2)]
https://wikidocs.net/64
https://blockdmask.tistory.com/531
https://www.daleseo.com/python-map/
https://wikidocs.net/22804
https://bio-info.tistory.com/28