■ 134. 이름없는 한줄짜리 함수 만들기 (lambda)
예제:
add=lambda x , y : x + y
입력값 실행문
print(add(1,3))
문제331.
아래의 리스트의 결과가 아래와 같이 수행될 수 있게 하시오
(lambda 를 이용해서 구현하시오)
a=[1,2,3,4,5]
결과:
[1,4,9,16,25]
a=[1,2,3,4,5]
add=lambda x : x*x
b=[]
for i in a:
b.append(add(i))
print(b)
||
##comprehension 으로 출력하기
a=[1,2,3,4,5]
add=lambda x : x*x
print([add(i) for i in a]) #리스트를 안씌우면 주소만 나옴!!
■ 135. 인지를 바꾸어 함수를 반복 호출하여 결과값 얻기 (map)
예제:
multi = lambda x
multi = lambda x : x*x
a=[1,2,3,4,5]
b=map(multi,a) # for 문을 대신해서 돌려준다. map(함수,데이터)
print(list(b))
※설명
map(A 함수명, A 함수에 제공할 매개변수값 들)
"매개변수의 값들 바꿔가면서 함수를 반복 실행하고자 할 때 사용한다."
문제332.
위의 결과를 map 을 이용하지 말고 출력하시오
"인자를 바꾸어 함수를 반복 호출하여 결과값 얻기"
답:
a=[1,2,3,4,5]
add=lambda x : x*x
print([add(i) for i in a]) #리스트를 안씌우면 주소만 나옴!!
문제333.
문제 157번 을 가져와서 함수로 만드시오
def find_cycle(a):
import random
cnt = 0
for i in range(a):
#지정숫자만 가능(여러값 리스트 적용시킬 함수로 쓰려면 맵이용!)
x = random.uniform(0, 1) #0~1 사이 아무숫자
y = random.uniform(0, 1)
if x**2 + y**2 <= 1:
cnt+= 1 # if를 충족시키면 카운트해라(=점찍어라)
pi = cnt*(1/i)*4
return pi
print(find_cycle(1000))
문제334.
몬테카를로 알고리즘을 이용해서 원주율 구하는 함수를
반복 수행해서 점의 갯수 많을 수록 원주율이 3.14에 가까워짐을
테스트하시오 ! (map 이용 !! )
a=[1000, 10000, 100000, 1000000, 10000000]
결과: [3.1223232, 3.132323, 3.139202, 3.1430030]
***map 을 쓰면 a와 같은 복수값 함수처리도 가능하다
def find_cycle(a):
import random
cnt = 0
for i in range(a):
#지정숫자만 가능(여러값 리스트 적용시킬 함수로 쓰려면 맵이용!)
x = random.uniform(0, 1) #0~1 사이 아무숫자
y = random.uniform(0, 1)
if x**2 + y**2 <= 1:
cnt+= 1 # if를 충족시키면 카운트해라(=점찍어라)
pi = cnt*(1/a)*4 #어차피 map이 하나씩 뽑게해주니까 for문 안에 넣을 필요없다
print(pi)
return pi
#print(find_cycle(100))
a=[1000, 10000, 100000, 1000000, 10000000]
fin=map(find_cycle,a)
print(list(fin))
★ map 이 a의 값을 하나하나씩 range 돌게끔 해준다