在列表理解方面有选择性

时间:2016-05-31 22:42:18

标签: python list-comprehension

我需要使用列表推导将列表中的某些项目从Celsius转换为Fahrenheit。我有一份温度清单。我最好的猜测是这样的:

good_temps = [c_to_f(temp) for temp in temperatures if 9 < temperatures[temp] <32.6]

但是我没有做对,我无法弄清楚。

2 个答案:

答案 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}的项目作为索引。