我正在尝试在python中编写一个函数。该功能基于算法。它是使用具有n个边的多边形的边来求和的。 对于每个“循环”,您添加n [i] + n [1 + i]。 在python中你可以用for循环吗? 在java和c ++等语言中,这是一件非常容易的事情。但是python for循环的本质使它不那么明显。 for循环可以实现这一点,还是应该使用while循环?
答案 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.izip
和iter
:
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]
这种方法可能会比拉链和迭代更慢,但可能更容易理解。