我目前正在學習Python中的列表理解。我將如何做到以下幾點:成對追加蟒蛇沒有ZIP
l1 = [2,4,6,8]
l2 = [2,3,4,5]
l = [*some list comprehension*]
使
l = [[2,2],[4,3],[6,4],[8,5]]
編輯:我能做到這一點沒有拉鍊?
我目前正在學習Python中的列表理解。我將如何做到以下幾點:成對追加蟒蛇沒有ZIP
l1 = [2,4,6,8]
l2 = [2,3,4,5]
l = [*some list comprehension*]
使
l = [[2,2],[4,3],[6,4],[8,5]]
編輯:我能做到這一點沒有拉鍊?
您希望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]]
在蟒蛇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]]
但是,這是行不通的,除非兩個列表具有相同的size.Also不知道你爲什麼會想這樣做沒有拉鍊。
使用列表理解和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]]
您可以使用zip
作爲
>>> l1 = [2,4,6,8]
>>> l2 = [2,3,4,5]
>>> zip(l1,l2)
[(2, 2), (4, 3), (6, 4), (8, 5)]
>>> [ list(x) for x in zip(l1,l2) ]
[[2, 2], [4, 3], [6, 4], [8, 5]]
好,使其更簡單你'[I,J]爲I,J拉鍊(L1,L2)]' –
當然,你可以不用'zip',但這是一個非常糟糕的方式來爲範圍(len(l1))]'... [] [[l1 [i],l2 [i]]) –
所以它是一個很好的編程習慣使用zip?還有,列表理解是不是很好的編程習慣? – Nitin