这是我的代码
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 更改它?
你必须先把 map 变成列表或元组。为此,
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)
强制计算所有 map 值。
result = list(mymap) # prints 1, 2, 3
但是,由于我们的evaluate
函数没有返回值,result
就是[None, None, None]