我目前正在学习Python中的列表理解。我该怎么做:
l1 = [2,4,6,8]
l2 = [2,3,4,5]
l = [*some list comprehension*]
这样
l = [[2,2],[4,3],[6,4],[8,5]]
编辑:我可以不用拉链吗?
答案 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