我有小整數列表,說:
[1, 2, 3, 4, 5, 6]
我希望收集順序對並返回一個包含從這些對創建的元組的新列表,即:
[(1, 2), (3, 4), (5, 6)]
我知道必須有一個非常簡單的方法來做到這一點,但不能完全解決它。
感謝
我有小整數列表,說:
[1, 2, 3, 4, 5, 6]
我希望收集順序對並返回一個包含從這些對創建的元組的新列表,即:
[(1, 2), (3, 4), (5, 6)]
我知道必須有一個非常簡單的方法來做到這一點,但不能完全解決它。
感謝
那麼有一個很容易的,但有些脆弱的方式,用自身切片版本壓縮它。
zipped = zip(mylist[0::2], mylist[1::2])
如果您不知道,最後一個切片參數是「步驟」。所以我們從零開始選擇列表中的每一個第二項(1,3,5)。然後我們做同樣的事情,但是從一個(2,4,6)開始,並用zip
從它們中取出元組。
直起itertools模塊的Python文檔:
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
l = [1, 2, 3, 4, 5, 6]
for pair in pairwise(l):
print pair
除此之外,你還需要知道的最簡單的方式太(如果你還沒有已經知道)
l = [1, 2, 3, 4, 5, 6]
o = [(l[i],l[i+1]) for i in range(0,len(l),2)]
除了上述的答案,你還需要知道的最簡單的方式太(如果你還沒有已經知道)
l = [1, 2, 3, 4, 5, 6]
o = [(l[i],l[i+1]) for i in range(0,len(l)-2,2)]
這裏應該是o = [(l[i],l[i+1]) for i in range(0,len(l),2)]
,因爲range(0, len(l) - 2, 2)
只會產生0和2
這是功課?如果是這樣,請使用[作業]標籤。 – 2011-01-10 13:00:39
可能重複[對單個列表](http://stackoverflow.com/questions/4628290/pairs-from-single-list)和其他許多人。 – 2011-01-10 13:05:47
@ S.Lott,爲什麼它可能是作業?它看起來像你的經歷嗎? – 2011-01-10 13:06:24