2024-09-24 22:25:18 发布
网友
假设我有一个iterable,只要元素与一个特定的谓词匹配,就跳过元素。我想影响当前的迭代器,而不是返回一个新的迭代器。在
我可以这么做:
# untested, just for explanation e = next(iterable) while True: if something(e): e = next(iterable) else: break
但是有没有内置的函数,或者一些常见的习惯用法呢?在
为什么不只是
e = next(iterable) while something(e): e = next(iterable)
还有,为什么“我想影响当前迭代器,而不是返回一个新的迭代器。”?我想不出你什么时候需要的。如果允许一个新的迭代器来包装当前的迭代器,itertools.dropwhilewim建议的迭代器更加python(并且可读)。在
itertools.dropwhile
这是^{}的基本用例。在
您的示例只是在第一个错误结果之后停止,因此这是相同的:
>>> it = iter(range(100000)) # just constructing _an_ iterator >>> next(itertools.filterfalse(lambda i: i != 12, it)) 12
我不清楚“我想影响当前迭代器,而不是返回一个新的迭代器”是什么意思,但是请注意,it本身已经进步了:
it
为什么不只是
还有,为什么“我想影响当前迭代器,而不是返回一个新的迭代器。”?我想不出你什么时候需要的。如果允许一个新的迭代器来包装当前的迭代器,
itertools.dropwhile
wim建议的迭代器更加python(并且可读)。在这是^{} 的基本用例。在
您的示例只是在第一个错误结果之后停止,因此这是相同的:
我不清楚“我想影响当前迭代器,而不是返回一个新的迭代器”是什么意思,但是请注意,
^{pr2}$it
本身已经进步了:相关问题 更多 >
编程相关推荐