如何通过 python 中的函数运行列表?



我正在尝试通过我创建的函数运行我的列表,但不断收到错误。我不知道出了什么问题。

温度(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))

最新更新