您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python-为什么我不能对相同的数据进行两次迭代?

Python-为什么我不能对相同的数据进行两次迭代?

这是因为它data是一个迭代器,你只能使用一次迭代器。例如:

lst = [1, 2, 3]
it = iter(lst)

next(it)
=> 1
next(it)
=> 2
next(it)
=> 3
next(it)
=> StopIteration

如果我们使用for循环遍历某些数据,那么最后一次StopIteration将导致它第一次退出。如果我们尝试再次对其进行迭代,则将继续获取StopIteration异常,因为迭代器已被消耗。

现在的第二个问题:如果我们做需要遍历迭代不止一次?一个简单的解决方案是用元素创建一个列表,我们可以根据需要遍历它多次。只要列表中的元素很少,就可以了:

data = list(db[3])

但是,如果元素很多,最好使用tee()以下方法创建独立的迭代器:

import itertools
it1, it2 = itertools.tee(db[3], n=2) # create as many as needed

现在我们可以依次遍历每个:

for e in it1:
    print("doing this one time")

for e in it2:
    print("doing this two times")
python 2022/1/1 18:21:13 有684人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶