我正在尝试在 python 中编写一个函数。该功能基于算法。它是使用具有 n 边的多边形的边求和。对于每个“循环”,您添加 n[i]+n[1+i]。在 python 中,你可以用 for 循环来做到这一点吗?在 java 和 c++ 等语言中,这很容易做到。但是python for 循环的性质使它不那么明显。for 循环可以做到这一点还是应该使用 while 循环?
问问题
197 次
2 回答
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
and 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]
于 2013-11-07T15:58:06.083 回答
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]
这种方法可能会更慢,但可能比拉链和迭代更容易遵循。
于 2013-11-07T16:00:51.850 回答