问题描述
def prevIoUs_current(iterable):
it = iter(iterable)
prv = None
cur = it.__next__()
try:
while True:
yield prv,cur
prv = cur
cur = it.__next__()
except stopiteration:
yield prv,None
我发现yield自然停止,除了阶段不执行。 就像我调用的那样:
s1 = [1,2,3]
g = prevIoUs_current(s1)
for i in range(len(s1)):
pre,cur = next(g)
print(pre,cur)
它打印:
None,1
1,2
2,3
我只是不知道我有 while True 条件,我认为它会继续运行直到出错。 但为此,它似乎在列表结束时停止。我不知道为什么它会这样运行。我认为它应该给出如下结果:
None,3
3,None
解决方法
@user504909 - 这是因为你的范围(len(s1)):
因此,如果您想包含 3,那么正如之前的帖子所建议的那样,您应该将其更改为 - range(len(s1)+1) then。
The range() function has two sets of parameters,as follows:
range(stop)
stop: Number of integers (whole numbers) to generate,starting from zero. eg. range(3) == [0,1,2].