我正在尝试通过我创建的函数运行我的列表,但不断收到错误。我不知道出了什么问题。
温度(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)
给出此错误:
索引错误:列出索引超出范围
我尝试了一些不同的东西,但我尝试过的都没有奏效。你有什么提示吗?谢谢。
最pythonic的解决方案是使用列表理解:
temp_c = [fahrToCelsius(t) for t in temp_f]
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))
使用for i in temp_f
迭代列表会使i
在此上下文中引用列表中的每个项目。
您要做的是迭代列表索引,例如for i in range(len(temp_f))
。
或者,您可以像以前一样迭代列表项,但将i
作为参数传递给fahrToCelsius
(而不是temp_f[i]
(。
如果您想在尝试时使用列表作为此问题的输入,请使用numpy数组而不是列表,它将广播您的转换
import numpy as np
Lis= np.array([30,40,50])
def fahrToCelsius(tempFahrenheit):
return (tempFahrenheit - 32) /1.8
print(fahrToCelsius(Lis))