2013-05-06 49 views
3

我是一個Python初學者,所以我很抱歉如果這是一個非常基本的問題。如何配對兩個列表?

我有兩個數據列出了從獲得:

with filein as f: 
     reader=csv.reader(f) 
     xs, ys = zip(*reader) 

我想創建一個循環將採取的第一項「XS」和第一項「伊蘇」,並打印出來出。然後,我想循環回來並重復這兩個列表中的第二項,等等。

我以爲是這樣的:

for x in xs and y in ys: 

或者

for x in xs: 
    for y in ys: 

但是這些都似乎給了期望的結果。

回答

8

使用zip功能,與元組拆包一起:

for x, y in zip(xs, ys): 
    print x, y 

在你的情況,取決於你所需要的xsys什麼,你可以通過csv.reader直接已經迭代:

with filein as f: 
    reader=csv.reader(f) 
    for x, y in reader: 
     print x, y 

zip(xs, ys)線路正在有效地改變您的xs, ys = zip(*reader)線路。

3

使用zip

>>> L=[1,2,3] 
>>> M=[4,5,6] 
>>> for a,b in zip(L,M): 
... print(a,b) 
... 
1 4 
2 5 
3 6 
0

對於一條線,你可以使用map()lambda()組合。 Look here if not familiar to this concepts.

但要小心,您必須使用python 3.x,以便print是一個函數,可以在lambda表達式中使用。

>>> from __future__ import print_function 
>>> l1 = [2,3,4,5] 
>>> l2 = [6,7,3,8] 
>>> list(map(lambda X: print(X[0],X[1]), list(zip(l1,l2)))) 

輸出

2 6 
3 7 
4 3 
5 8