成对地附加在没有ZIP的python中

时间:2015-07-04 05:06:33

标签: 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]]
编辑:我可以不用拉链吗?

3 个答案:

答案 0 :(得分:2)

您需要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而不是元组 -

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

在python 3.x中,zip返回一个迭代器,所以如果你不想要一个列表,但只想迭代每个组合(zipped)元素,你可以直接使用 - {{1} }。

正如问题中提到的那样,如果没有zip(l1,l2)函数,可以使用enumerate函数从一个列表中获取索引和元素,然后使用索引获取第二个列表中的元素。

zip

但是除非两个列表都有相同的大小,否则这不会起作用。也不确定为什么你想要没有拉链。

答案 1 :(得分:0)

使用列表理解和zip

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

答案 2 :(得分:0)

您可以将'SKNode?.Type' does not have a member named 'new'用作

zip