python - 如何检查一个iterable是否可以再次被遍历?

标签 python iterator iterable-unpacking

考虑以下代码:

def my_fun(an_iterable):
  for val in an_iterable:
    do_work(val)
    if some_cond(val):
       do_some_other_work(an_iterable)
       break

如果an_iterable是一个list/tupledo_some_other_work将再次获取整个列表。但如果 an_iterable 是一个 iteratorgenerator,它只会接收列表中的其余项目。如何区分两种情况?我希望 do_some_other_work 仅接收其余项目。

最佳答案

没有通用的方法来判断是否可以重复迭代一个对象。尤其是类似文件的对象,很可能会搞砸检查。幸运的是,您不需要检查这一点。如果您只想确保 do_some_other_work 只获取其余项目,您可以显式请求迭代器:

def my_fun(iterable):
    iterable = iter(iterable)
    # Do whatever.

关于python - 如何检查一个iterable是否可以再次被遍历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17707238/

相关文章:

python - 显示特定数量的字符

C++ 迭代器错误

python - 这个函数有什么作用? (Python 迭代器)

python - For循环项目拆包

python - 遍历元组列表并仅解压缩第一个元素

python - 为什么字典可以解包为元组?

python - 解释器会编译Python脚本吗?

python - 如何保持python程序运行直到被用户和python文件处理关闭

python - 如何制作具有不同值的相同变量的列表? Python

c++ - 为什么在以空映射开始的feed时std::next卡住了