栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将python中的不相等列表压缩到一个列表中,该列表不会从要压缩的较长列表中删除任何元素

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将python中的不相等列表压缩到一个列表中,该列表不会从要压缩的较长列表中删除任何元素

通常,您使用

itertools.zip_longest
以下方法:

>>> import itertools>>> a = [1, 2, 3]>>> b = [9, 10]>>> for i in itertools.zip_longest(a, b): print(i)... (1, 9)(2, 10)(3, None)

但是

zip_longest
None
s(或您作为
fillvalue=
参数传递的任何值)填充较短的可迭代项。如果这不是您想要的,则可以使用一种理解来过滤
None
s:

for i in (tuple(p for p in pair if p is not None)for pair in itertools.zip_longest(a, b)):    print(i)

但是请注意,如果两个可迭代对象都具有

None
值,则也会将其过滤掉。如果您不想这样做,请定义自己的对象
fillvalue=
并过滤该对象,而不是
None

_marker = object()def zip_longest_no_fill(a, b):    for i in itertools.zip_longest(a, b, fillvalue=_marker):        yield tuple(x for x in i if x is not _marker)list(zip_longest_no_fill(a, b))  # [(1, 9), (2, 10), (3,)]

在Python
2上,请

itertools.izip_longest
改用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号