不,没有,但您可以轻松组合以下功能花点时间 and izip_最长达到你想要的
from itertools import takewhile, izip_longest
from operator import itemgetter
somezip = lambda *p: list(takewhile(itemgetter(0),izip_longest(*p)))
(如果第一个迭代器可能包含计算结果为 False 的项,您可以用 lambda 表达式替换 itemgetter - 请参阅 @ovgolovin 的评论)
somezip = lambda *p: list(takewhile(lambda e: not e[0] is None,izip_longest(*p)))
Examples
>>> from itertools import takewhile, izip_longest
>>> from operator import itemgetter
>>> a = [1, 2, 3, 4]
>>> b = [5, 6, 7, 8, 9]
>>> c = [10, 11, 12]
>>> somezip(a,b)
[(1, 5), (2, 6), (3, 7), (4, 8)]
>>> somezip(a,c)
[(1, 10), (2, 11), (3, 12), (4, None)]
>>> somezip(b,c)
[(5, 10), (6, 11), (7, 12), (8, None), (9, None)]