Python for循环获取索引和索引+ 1

时间:2013-11-07 15:56:46

标签: python

我正在尝试在python中编写一个函数。该功能基于算法。它是使用具有n个边的多边形的边来求和的。 对于每个“循环”,您添加n [i] + n [1 + i]。 在python中你可以用for循环吗? 在java和c ++等语言中,这是一件非常容易的事情。但是python for循环的本质使它不那么明显。 for循环可以实现这一点,还是应该使用while循环?

2 个答案:

答案 0 :(得分:3)

您可以在此处使用zip和for循环:

>>> lis = range(10)
>>> [x+y for x, y in zip(lis, lis[1:])]
[1, 3, 5, 7, 9, 11, 13, 15, 17]

如果列表很大,那么您可以使用itertools.izipiter

from itertools import izip, tee
it1, it2 = tee(lis)   #creates two iterators from the list(or any iterable)
next(it2)             #drop the first item
print [x+y for x, y in izip(it1, it2)]
#[1, 3, 5, 7, 9, 11, 13, 15, 17]

答案 1 :(得分:1)

for i in range(N):  # i = 0,1, ... N-1
      val = n[i] + n[i+1]

如果你想'环绕',你可以写

for i in range(N):  # i = 0,1, ... N-1
      val = n[i] + n[(i+1)%N]

..或使用n [-1]与最后一个元素

相同的事实
for i in range(N):  # i = 0,1, ... N-1
      val = n[i-1] + n[i]   # [N-1]+[0], [0]+[1], ... [N-2] + [N-1]

这种方法可能会比拉链和迭代更慢,但可能更容易理解。