for循环中的Python数组索引

时间:2013-02-16 16:16:04

标签: python for-loop indexing

该计划旨在根据以下内容生成阻值:

enter image description here

(考虑到一系列阻力和温度)。

为了获得电阻的当前值,该等式需要来自阵列的初始电阻和初始温度值(R_0,T_0)。它还需要来自阵列的温度(T)的连续值。

我的尝试:

r_model=[]
for r in r_values:
    result = r*(1+2.9*(t_values[r+1]-t_values[r]))
    fit2.append(result)
r_model = array(r_model)

我的错误:

index out of bounds

3 个答案:

答案 0 :(得分:1)

如果在处理for循环时需要数组索引,则可以使用enumerate

r_model=[]
for (index, r) in enumerate(r_values):
    result = r*(1+2.9*(t_values[index+1]-t_values[index]))
    fit2.append(result)
r_model = array(r_model)

如果r_values[1500,2500,0.0001],那么enumerate(r_values)将遍历此序列:

(0, 1500)
(1,2500)
(2,0.0001)

在每一步中,您都可以使用索引(0,1和2)从t_values列表中获取正确的值。

答案 1 :(得分:0)

你有:

r_values = arange(1500,2500,0.0001)    #R_0 values
for r in r_values:
# . . .
    t_values[r+1]

所以第一次通过循环你最终:

t_values[1501]

但是t_values只有3个元素。

答案 2 :(得分:0)

您使用r的值而不是索引来索引t。 for ri, r in r_values我相信,是语法 - 然后使用ri来索引t_values

另见Accessing the index in Python 'for' loops

您的代码中的另一个问题:您的等式会讨论与T0的差异,但您会得到差异t_values[r+1]-t_values[r]。应该是t_values[ri]-t_values[0]