python - python 3中zip的替代品?
问题描述
python 3中zip的替代品?
from itertools import zip_longest
list_1 = [["ele1"],["ele_2"],["ele_3"]]
list_2 = [["ele4"],["ele_5"]]
result = [[x for x in t if x is not None] for t in zip_longest(list_1,list_2)]
print(result)
我的输出为
[[['ele1'], ['ele4']], [['ele_2'], ['ele_5']], [['ele_3']]]
预期输出:
[['ele1'], ['ele4']], [['ele_2'], ['ele_5']], [['ele_3']]
解决方案
如果你想避免使用压缩两个列表,我会这样做的方法是在try
/except
子句中附加两个列表中的值,并附加定义为迭代器的list_2
(或者如果它是两者中最短的)的值,避免在list_1
这样zip
在迭代时必须同时列出两个列表:
# iterate over the longest list. Define other as iterator
l2 = iter(list_2)
out = [[] for _ in range(len(list_1))]
for ix, i in enumerate(list_1):
try:
out[ix].append(i)
out[ix].append(next(l2))
except StopIteration:
break
给出:
print(out)
[[['ele1'], ['ele4']], [['ele_2'], ['ele_5']], [['ele_3']]]
推荐阅读
- macos-mojave - 将 Mojave 重音颜色转换为 RGBA
- linux - 压缩目录中的文件,不带文件扩展名
- mysql - 我想在ubuntu18.10上安装mysql8.0,但是apt一直在尝试安装mysql5.7,为什么?
- swift - 如何捏放大代码创建的滚动视图
- flutter - 如何通过颤振获得当前设备的地理位置?
- javascript - DOM 事件目标解构
- swift - Firebase 函数(putData / putFile)不执行
- python - 使用 Google Speech API 在 python 中出现属性错误
- linux - 有没有办法以明智的方式查看 .cgi 文件包含的脚本?
- javascript - 如何根据属性匹配来自不同对象数组的值?