我正在尝试通过我创建的函数运行列表,但始终会出错。我不知道怎么了。
F中的温度:
temp_f = [19, 21, 21, 21, 23]
功能:
def fahrToCelsius(tempFahrenheit):
return (tempFahrenheit - 32) /1.8
该功能有效,例如
fahrToCelsius(temp_f[1])
给予:
-6.111111111111111
但是虽然没有运行它,但是没有列表。我的尝试:
temp_c = []
for i in temp_f:
temp_c.append (fahrToCelsius(temp_f[i]))
print(temp_c)
给出此错误:
IndexError:列表索引超出范围
我尝试了几种不同的方法,但是没有尝试过。你有什么建议吗?谢谢。
答案 0 :(得分:2)
最Python化的解决方案是使用列表理解:
temp_c = [fahrToCelsius(t) for t in temp_f]
答案 1 :(得分:0)
for i in temp_f
实际上是将i分配给数组中的每个元素,所以是19、21等。因此,temp_f[i]
实际上是temp_f[19]
,这就是为什么会出现错误的原因。将循环更改为:
for i in range(0, len(temp_f)):
temp_c.append (fahrToCelsius(temp_f[i]))
或者相反:
for temp in temp_f:
temp_c.append (fahrToCelsius(temp))
答案 2 :(得分:0)
使用for i in temp_f
迭代列表使i
在此上下文中引用列表中的每个项目。
您要做的是改为迭代列表索引,例如for i in range(len(temp_f))
。
或者,您可以像以前一样迭代列表项,但是将i
作为参数传递给fahrToCelsius
(而不是temp_f[i]
)。
答案 3 :(得分:0)
如果您想在尝试使用list作为此问题的输入,然后使用numpy数组而不是list,它将广播您的转换
import numpy as np
Lis= np.array([30,40,50])
def fahrToCelsius(tempFahrenheit):
return (tempFahrenheit - 32) /1.8
print(fahrToCelsius(Lis))