考虑以下代码:
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
/tuple
,do_some_other_work
将再次获取整个列表。但如果 an_iterable
是一个 iterator
或 generator
,它只会接收列表中的其余项目。如何区分两种情况?我希望 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/