Python 2.7 迭代arraylist,计算python中连续值的差值

Python 2.7 迭代arraylist,计算python中连续值的差值,python-2.7,arraylist,Python 2.7,Arraylist,我试图迭代arraylist,在每个循环中保存连续值的最高/最低差值 e1=([ 0 , 0, 0, 0, 15, 28, 28, 28, 27, 27, 35, 44, 43, 43, 42, 39]) Hodiffmax = 0 Hodiffmin = 0 for k in e1: diff1= e1[k+1] - e1[k] if diff1 > Hodiffmax: Hodiffmax=diff1 if diff1 < Hodiffmin:

我试图迭代arraylist,在每个循环中保存连续值的最高/最低差值

e1=([ 0 , 0,  0,  0, 15, 28, 28, 28, 27, 27, 35, 44, 43, 43, 42, 39])
Hodiffmax = 0
Hodiffmin = 0
for k in e1:
  diff1= e1[k+1] - e1[k]
  if diff1 > Hodiffmax:
      Hodiffmax=diff1
  if diff1 < Hodiffmin:
      Hodiffmin=diff1
问题是我得到了一个索引越界错误。如何使用[k+1]遍历arraylist?我现在尝试了很多东西,但是我没有变得更聪明。谢谢你的帮助

编辑既不起作用也不起作用的内容:

for k in e1:
    for w in k:
      diff1= e1[w+1] - e1[w]
      if diff1 > Hodiffmax:
          Hodiffmax=diff1
      if diff1 < Hodiffmin:
          Hodiffmin=diff1
错误:对于k中的w-TypeError:'numpy.int32'对象不可编辑

请使用:

使用:

使用[y-x代表x,y在zipe1中,e1[1:]可以获得连续的差异,而不必担心索引:

>>> e1 = [ 0 , 0,  0,  0, 15, 28, 28, 28, 27, 27, 35, 44, 43, 43, 42, 39]
>>> l = [y - x  for x, y in zip(e1, e1[1:])]
>>> Hodiffmax, Hodiffmin = max(l), min(l)
>>> Hodiffmax, Hodiffmin
15, -3
使用[y-x代表x,y在zipe1中,e1[1:]可以获得连续的差异,而不必担心索引:

>>> e1 = [ 0 , 0,  0,  0, 15, 28, 28, 28, 27, 27, 35, 44, 43, 43, 42, 39]
>>> l = [y - x  for x, y in zip(e1, e1[1:])]
>>> Hodiffmax, Hodiffmin = max(l), min(l)
>>> Hodiffmax, Hodiffmin
15, -3

这里的问题是您正在迭代列表中的元素。通过做

对于e1中的k:

k将得到e1上元素的值。k=0,k=0,k=0,k=0,k=15,k=28等等。相反,您希望在列表的范围内进行迭代

for k in range(len(e1)):
k将获得e1上的索引值。k=0,k=1,k=2,k=3,k=4,k=5等等。我想你在找这样的东西:

e1 = [0, 0, 0, 0, 15, 28, 28, 28, 27, 27, 35, 44, 43, 43, 42, 39]

for k in range(len(e1)):
  print k
  if k > 0:
    diff1 = e1[k] - e1[k-1]
    if diff1 > Hodiffmax:
      Hodiffmax=diff1
    if diff1 < Hodiffmin:
      Hodiffmin=diff1

print 'Hodiffmax ' + str(Hodiffmax)
print 'Hodiffmin ' + str(Hodiffmin)

这里的问题是您正在迭代列表中的元素。通过做

对于e1中的k:

k将得到e1上元素的值。k=0,k=0,k=0,k=0,k=15,k=28等等。相反,您希望在列表的范围内进行迭代

for k in range(len(e1)):
k将获得e1上的索引值。k=0,k=1,k=2,k=3,k=4,k=5等等。我想你在找这样的东西:

e1 = [0, 0, 0, 0, 15, 28, 28, 28, 27, 27, 35, 44, 43, 43, 42, 39]

for k in range(len(e1)):
  print k
  if k > 0:
    diff1 = e1[k] - e1[k-1]
    if diff1 > Hodiffmax:
      Hodiffmax=diff1
    if diff1 < Hodiffmin:
      Hodiffmin=diff1

print 'Hodiffmax ' + str(Hodiffmax)
print 'Hodiffmin ' + str(Hodiffmin)

你的意思是在循环内,例如:对于k中的w:restcode…因为这两者都不起作用,导致不可测试的错误阅读本教程,你将得到解决方案。你的意思是在循环内,例如:对于k中的w:restcode…因为这两者都不起作用,导致不可测试的错误阅读本教程,你将得到解决方案。。