x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33,
29,40,36,24,26,30,30,32,34,32,28,36,24,32]
def fahrenToCel(x):
return (x - 32) * (5 / 9)
print fahrenToCel(x)
我知道我已经问了几次,但我仍然遇到问题。我只需要使用一个函数让数字列表以摄氏度显示。这是我必须做的最后一部分,但我无法弄清楚。请帮忙
答案 0 :(得分:4)
x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33,
29,40,36,24,26,30,30,32,34,32,28,36,24,32]
def fahrenToCel(x):
return (x - 32) * (5.0 / 9) # 5.0 to make result float (you can explicitly convert to float as well)
print [fahrenToCel(item) for item in x]
答案 1 :(得分:2)
除非x
是一个numpy数组,否则python将不知道如何迭代x
中的值。您需要循环遍历x中的值并将每个元素传递给fahrenToCel()
并将返回的值放在新列表中,或者让fahrenToCel()
获取列表并在内部执行循环并返回新列表
您可能需要查看python教程的以下章节:
http://docs.python.org/tutorial/controlflow.html
或者搜索有关如何遍历列表的其他示例。
更新例如:
def stupidfunc(y):
return y
a = [1,2,3,4,5]
b = [stupidfunc(x) for x in a]
或
def stupidfunc2(y):
return [stupidfunc2(x) for x in y]
a = [1,2,3,4,5]
b = stupidfunc2(a)
答案 2 :(得分:2)
你使用map(fahrenToCel, x)
怎么样?
x = [30,34,40,36,36,28,29,32,34,44,36,35,28,33, 29,40,36,24,26,30,30,32,34,32,28,36,24,32]
def fahrenToCel(f_temp):
return (f_temp - 32) * (5.0/9)
celsius_list = map(fahrenToCel, x)
顺便说一下,请务必在5.0/9
fahrenToCel
函数中写5/9 == 0