본문 바로가기

python

26. lambda, map

728x90
반응형

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 돌게끔 해준다


728x90
반응형