我需要使用列表推导将列表中的某些项目从Celsius转换为Fahrenheit。我有一份温度清单。我最好的猜测是这样的:
good_temps = [c_to_f(temp) for temp in temperatures if 9 < temperatures[temp] <32.6]
但是我没有做对,我无法弄清楚。
答案 0 :(得分:2)
另一个答案的替代解决方案是使用过滤器来获取子集:
filter(lambda temp: 9 < temp < 32.6, temperatures)
然后是列表理解来进行转换:
[c_to_f(temp) for temp in temperatures]
最终表达:
good_temps = [c_to_f(temp) for temp in filter(lambda t: 9 < t < 32.6, temperatures)]
答案 1 :(得分:2)
你非常接近。你需要的是:
good_temps = [c_to_f(temp) for temp in temperatures if 9 < temp < 32.6]
如果代码大于9且小于32.6,则此代码仅转换temp
。对于该范围之外的temp
值,不会将任何内容添加到good_temps
。
temp
已经是来自temperatures
的项目,因此temperatures[temp]
没有多大意义,因为他们试图使用{{1}的项目作为索引。