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

时间:2018-10-14 05:34:55

标签: python list

我正在尝试通过我创建的函数运行列表,但始终会出错。我不知道怎么了。

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:列表索引超出范围

我尝试了几种不同的方法,但是没有尝试过。你有什么建议吗?谢谢。

4 个答案:

答案 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))