2012-10-31 18 views

回答

5

嘗試使用zip()

zip(lst, lst[1:]) 

此外,您不應該使用名稱list,因爲您將覆蓋內置列表類型。

例子:

>>> lst = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] 
>>> zip(lst, lst[1:]) 
[('A', 'B'), ('B', 'C'), ('C', 'D'), ('D', 'E'), ('E', 'F'), ('F', 'G')] 

對於一個版本將與發電機或其他一個通iterables工作,你可以使用pairwise recipe from the itertools docs

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) 
+0

這是我認爲最好的方式。 – arshajii

+0

這是怎麼樣比其他2好? ....是一樣的...(+1都是相同的,它是正確的答案) –

1

使用列表理解,從0到迭代長度 - 1

print [(a[i],a[i+1]) for i in range(len(a)-1)] 

,甚至更好,只是使用ZIP

print zip (a,a[1:]) 
3
>>> a = [1,2,3,4,5] 
>>> zip(a, a[1:]) 
<zip object at 0x7fe6e905ab90> 
>>> list(zip(a, a[1:])) 
[(1, 2), (2, 3), (3, 4), (4, 5)]