此问题已在Python 2.x中得到解答。我无法在Python 3中使用它。
我将izip
更改为zip
,因为我了解izip已从Python 3中删除。
from itertools import tee, islice, chain
def previous_and_next(some_iterable):
prevs, items, nexts = tee(some_iterable, 3)
prevs = chain([None], prevs)
nexts = chain(islice(nexts, 1, None), [None])
print(zip(prevs, items, nexts))
a = list(range(1,10))
previous_and_next(a)
运行此操作会给我<zip object at 0x7f338e4ea638>
此代码有什么问题?
答案 0 :(得分:1)
<zip object at 0x7f338e4ea638>
是一个迭代器。要获取迭代器中的项,必须将其传递给tuple()
或list()
。
具体而言,将print(zip(prevs, items, nexts))
替换为print(tuple(zip(prevs, items, nexts)))
或print(list(zip(prevs, items, nexts)))