2013-10-11 132 views
1

我有一個列表Python - 將鄰居元素分組到列表中的元組中?

A=[9.6, 7.9, 19.4, 13.3, 31.0, 16.1, 44.3, 16.4, 55.7, 16.5, 66.6, 16.7, 77.7, 17.7, 88.7, 19.0, 101.8, 21.0] 

它實際上是一個系列的2-d點的1-d表示。偶數索引值是x值,奇數值是y。

我現在想A轉化爲

B=[(9.6, 7.9), (19.4, 13.3), (31.0, 16.1), (44.3, 16.4), (55.7, 16.5), (66.6, 16.7), (77.7, 17.7), (88.7, 19.0), (101.8, 21.0)] 

什麼是最Python的方式這樣做的

+0

@kojiro我的是元組。那是一個列表。 –

+1

但是,在這個問題中給出的幾個解決方案不僅可以生成元組,而且可以像你的那樣生成元組,通過調用'tuple'幾乎可以將所有元組轉換爲生成元組而不是列表。 – DSM

回答

5

如何

B=[(A[2*i],A[2*i+1]) for i in range(len(A)/2)] 

,或者如@Igonato的意見建議,一個整潔的方式說同樣是:

B=[(A[i],A[i+1]) for i in range(0,len(A),2)] 
+0

我建議'B = [(A [i],A [i + 1])在範圍內(0,len(A),2)]' – Igonato

+0

我的暱稱和範圍(len(A),2)是錯誤=) – Igonato

+0

@Igonato謝謝...哎呀。 ;) –

6
In [60]: A=[9.6, 7.9, 19.4, 13.3, 31.0, 16.1, 44.3, 16.4, 55.7, 16.5, 66.6, 16.7, 77.7, 17.7, 88.7, 19.0, 101.8, 21.0] 

In [61]: zip(A[::2], A[1::2]) 
Out[61]: 
[(9.6, 7.9), 
(19.4, 13.3), 
(31.0, 16.1), 
(44.3, 16.4), 
(55.7, 16.5), 
(66.6, 16.7), 
(77.7, 17.7), 
(88.7, 19.0), 
(101.8, 21.0)] 

In [62]: zip(itertools.islice(A, 0, len(A), 2), itertools.islice(A, 1, len(A), 2)) 
Out[62]: 
[(9.6, 7.9), 
(19.4, 13.3), 
(31.0, 16.1), 
(44.3, 16.4), 
(55.7, 16.5), 
(66.6, 16.7), 
(77.7, 17.7), 
(88.7, 19.0), 
(101.8, 21.0)] 
4
>>> A = [9.6, 7.9, 19.4, 13.3, 31.0, 16.1, 44.3, 16.4, 55.7, 16.5, 66.6, 16.7, 77.7, 17.7, 88.7, 19.0, 101.8, 21.0] 
>>> zip(*[iter(A)]*2) 
[(9.6, 7.9), (19.4, 13.3), (31.0, 16.1), (44.3, 16.4), (55.7, 16.5), (66.6, 16.7), (77.7, 17.7), (88.7, 19.0), (101.8, 21.0)] 
相關問題