python - 在没有 ZIP 的情况下在 python 中成对附加

标签 python list functional-programming

<分区>

我目前正在学习 Python 中的列表推导式。我将如何执行以下操作:

l1 = [2,4,6,8]
l2 = [2,3,4,5]
l = [*some list comprehension*]

这样

l = [[2,2],[4,3],[6,4],[8,5]]

编辑:我可以在没有 zip 的情况下执行此操作吗?

最佳答案

你想要 zip功能。

例子-

>>> l1 = [2,4,6,8]
>>> l2 = [2,3,4,5]
>>>
>>> l = list(zip(l1,l2))
>>> l
[(2, 2), (4, 3), (6, 4), (8, 5)]

如果您希望内部列表的类型为 list 而不是 tuple -

>>> l = [list(x) for x in zip(l1,l2)]
>>> l
[[2, 2], [4, 3], [6, 4], [8, 5]]

在 python 3.x 中,zip 返回一个迭代器,因此如果您不需要列表,而只想迭代每个组合(压缩)元素,您可以直接使用 - zip(l1,l2) .

如问题中所问,要在没有 zip 功能的情况下执行此操作,您可以使用 enumerate函数从一个列表中获取索引和元素,然后使用索引从第二个列表中获取元素。

>>> l = [[x,l2[i]] for i,x in enumerate(l1)]
>>> l
[[2, 2], [4, 3], [6, 4], [8, 5]]

但是除非两个列表具有相同的大小,否则这将不起作用。也不确定为什么要在没有 zip 的情况下这样做。

关于python - 在没有 ZIP 的情况下在 python 中成对附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31217116/

相关文章:

algorithm - 大量数字的最有效排序算法

python - 遍历列表,比较前面的元素和后面的元素

functional-programming - 柯里化(Currying)的真实用例是什么?

function - 寻找功能组成的解释

python - 避免嵌套 If 语句? ( python 2.7)

python - 相当于 C 的 httplib

python - 您如何以与在 Django 中排序 QuerySets 相同的方式对列表进行排序?

python - 十六进制文件头,魔数(Magic Number),python

c++ - C++98 中整数集列表的初始化

f# - 如何在功能上迭代 f# 中列表中的每个项目一次?