gpt4 book ai didi

python - 排除最后一个元素的迭代器

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:28 24 4
gpt4 key购买 nike

什么是在不知道最后一个元素长度的情况下实现排除最后一个元素的迭代器的 pythonic 方法?

一个例子:

>>> list(one_behind(iter(range(10)))
... [0, 1, 2, 3, 4, 5, 6, 7, 8]

>>> iter_ = one_behind(iter((3, 2, 1)))
>>> next(iter_)
... 3
>>> next(iter_)
... 2
>>> next(iter_)
... StopIteration

一个简单的方法是使用循环并存储先前的值,但我想要更短的东西。

使用循环的引用实现:

def one_behind(iter_):
prev = None
for i, x in enumerate(iter_):
if i > 0:
yield prev
prev = x

最佳答案

使用 itertools.tee :

import itertools

def behind(it):
# it = iter(it) # to handle non-iterator iterable.
i1, i2 = itertools.tee(it)
next(i1)
return (next(i2) for x in i1)

用法:

>>> list(behind(iter(range(3))))
[0, 1]

关于python - 排除最后一个元素的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com