您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在zip和zip_longest之间是否有中间立场?

在zip和zip_longest之间是否有中间立场?

没有,但是您可以轻松地将takewhileizip_longest功能结合起来以实现所需的功能

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)))

例子

>>> 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)]
其他 2022/1/1 18:47:09 有567人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶