본문 바로가기
파이썬

파이썬 Python 3으로지도 객체를 인쇄하는 방법은 무엇입니까?

by º기록 2020. 10. 19.
반응형

이것은 내 코드입니다

def fahrenheit(T):
    return ((float(9)/5)*T + 32)

temp = [0, 22.5, 40,100]
F_temps = map(fahrenheit, temp)

이것은 mapobject이므로 이와 같은 것을 시도했습니다.

for i in F_temps:
    print(F_temps)

<map object at 0x7f9aa050ff28>
<map object at 0x7f9aa050ff28>
<map object at 0x7f9aa050ff28>
<map object at 0x7f9aa050ff28>

확실하지 않지만 Python 2.7에서 내 솔루션이 가능하다고 생각합니다.이를 3.5로 변경하는 방법은 무엇입니까?

 

해결 방법

 

먼저지도를 목록이나 튜플로 바꿔야합니다. 하기 위해서,

print(list(F_temps))

이는 맵이 느리게 평가되기 때문에 값이 요청시에만 계산됨을 의미합니다. 예를 보자

def evaluate(x):
    print(x)

mymap = map(evaluate, [1,2,3]) # nothing gets printed yet
print(mymap) # <map object at 0x106ea0f10>

# calling next evaluates the next value in the map
next(mymap) # prints 1
next(mymap) # prints 2
next(mymap) # prints 3
next(mymap) # raises the StopIteration error

for 루프에서 map을 사용하면 루프가 자동으로 next 를 호출하고 StopIteration 오류를 루프의 끝으로 처리합니다. list (mymap) 를 호출하면 모든지도 값이 강제로 평가됩니다.

result = list(mymap) # prints 1, 2, 3

그러나 evaluate 함수에는 반환 값이 없으므로 result 는 단순히 [None, None, None] 입니다.

 

참조 페이지 https://stackoverflow.com/questions/44461551

 

 

반응형

댓글