【发布时间】:2021-04-01 04:05:10
【问题描述】:
我有类似的python3函数:
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
我发现它的产量自然停止,除了阶段之外不执行。 就像我调用的那样:
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, 1
1, 2
2, 3
3, None
【问题讨论】:
-
for i in range(len(s1)),太短了,加个+1,for i in range(len(s1) + 1)。
标签: python-3.x list generator yield