如何在 Python 中跳过 Generator/Iterator 的第一个元素
使用 UliEngineering 中的 skip_first() 实用函数:
首先,使用以下命令安装 UliEngineering
install_uliengineering_user.sh
pip install --user UliEngineering注意 UliEngineering 需要 Python 3.3+。
现在你可以像这样使用 skip_first():
skip_first_usage.py
from UliEngineering.Utils.Iterable import skip_first
for v in skip_first(v for v in [1,2,3,4,5]):
print(v) # 打印 2,3,4,5skip_first() 适用于任何 Iterable 或 Iterator。
不想安装 UliEngineering?
将 skip_first() 实用函数复制到你自己的代码中:
skip_first_impl.py
import collections
def skip_first(it):
"""
跳过 Iterator 或 Iterable 的第一个元素,
如 Generator 或 list。
这将始终返回 generator 或在参数类型不兼容时引发 TypeError()
"""
if isinstance(it, collections.Iterator):
try:
next(it)
yield from it
except StopIteration:
return
elif isinstance(it, collections.Iterable):
yield from skip_first(it.__iter__())
else:
raise TypeError(f"你必须向 skip_first() 传递 Iterator 或 Iterable,但你传递了 {it}")Check out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow