2014-02-05 138 views
1

假設我有兩個列表,foobar實例如下:如何一次迭代兩個列表?

foo = ['Hello', 'Yes', 'No'] 
bar = ['Bonjour', 'Oui', 'Non'] 

假設,那麼,我想通過數值迭代和打印像這樣的連接:

count = 0 
for x in foo: 
    print x + bar[count] 
    count += 1 

這將使我:

HelloBonjour

YesOui

NONON

會不會有,不會要求計數iterator方法?也許沿着...

for x in foo and y in bar: 
    pint x + y 

可用?

回答

13

您可以使用zip

foo = ['Hello', 'Yes', 'No'] 
bar = ['Bonjour', 'Oui', 'Non'] 
for x, y in zip(foo, bar): 
    print x + y 

輸出:

HelloBonjour 
YesOui 
NoNon 
+2

+1拉鍊。如果你運行的是較舊版本的python(<3),應該注意''itertools.izip()'將會這樣做。默認情況下,當前版本的python似乎是懶惰的。 – KChaloux

+0

具體而言,Python 3.x很懶。 Python 2.7仍然是最新的:) – chepner

0

郵編是什麼,會幫助你當你的兩個輸入列表大小相同。如果列表的大小不同,則僅對另一個列表中具有對的元素執行操作。如果你想填的東西缺少對您可以使用地圖:

for i,j in map(None,listA,listB): 
    print i+j 

輸出:

HelloBonjour 
YesOui 
NoNon 
+1

'itertools.izip_longest''也可以完成這項工作,也許有更清晰的意圖。 –

0

你可以試試這個傢伙:

print '\n'.join(map(lambda x, y: x+y, foo, bar))