You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用lambda与map()做温度转换时,Celsius列表输出为空的问题求助

温度转换代码中空列表问题的原因与解决办法

核心问题是Python里的map对象是一次性迭代器:当你第一次执行list(Farhenheit)时,已经把这个map迭代器里的所有元素都遍历完了,迭代器的指针会移到末尾,之后再复用这个迭代器(比如传给第二个map),就不会再有元素返回,所以最终得到空列表。

解决方法1:提前将map结果转为列表存储(推荐)

把华氏度的map结果先转成列表保存,这样后续可以重复使用:

temp2 = [39.2, 36.5, 37.3, 37.8]
# 转成列表存储,避免迭代器被耗尽
Farhenheit = list(map(lambda x: (float(9)/5) * x + 32, temp2))
print(Farhenheit)
# 输出: [102.56, 97.7, 99.14, 100.03999999999999]
Celsius = list(map(lambda x: (float(5)/9) * (x - 32), Farhenheit))
print(Celsius)
# 输出: [39.2, 36.5, 37.3, 37.8]

解决方法2:重新生成map对象(不推荐,重复计算)

如果不想提前转列表,可以重新创建华氏度的map对象,而不是复用之前的迭代器:

temp2 = [39.2, 36.5, 37.3, 37.8]
Farhenheit = map(lambda x: (float(9)/5) * x + 32, temp2)
print(list(Farhenheit))
# 重新创建map对象,避免复用已耗尽的迭代器
Celsius = map(lambda x: (float(5)/9) * (x - 32), map(lambda x: (float(9)/5) * x + 32, temp2))
print(list(Celsius))
# 输出: [39.2, 36.5, 37.3, 37.8]

内容的提问来源于stack exchange,提问作者Paddy Paddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:05:17