我需要这样的东西:

>>> for i in mark_last([1, 2, 3]):
...  print(i)
...
(1, False)
(2, False)
(3, True)

我是这样实现的,但是…
def mark_last(li):
    items = iter(items)
    try:
        prev = next(items)
    except StopIteration:
        return
    for item in items:
        yield prev, False
        prev = item
    yield prev, True

有内置的吗?或者用更短的方法也许有什么东西和itertools.groupby()结合在一起?–不接受使用len()的技巧,因为它们不适用于生成器。

最佳答案

是否有一些内置的标记序列的最后一个?
不,没有。
你的功能很好,除了两点:
它如何处理空序列?
你不应该只是raise StopIteration,而应该是break;最终raise StopIteration会导致RunTimeErrorPEP 479)。

关于python - 是否有一些内置的标记序列的末尾?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28933174/

10-10 14:34