2011-06-03 99 views
2

前提是我有兩個長度相同的列表list_a,list_b。訪問單個for循環中的兩個或多個列表

我可以打印他們的項目在一個for循環如下:

for i in range(0, len(list_a)): 
    print "%s %s" % (list_a[i], list_b[i]) 

沒有任何替代性和優雅的方式做上述任務?

我已經試過

for a, b in list_a, list_b: 
    print "" 
+0

搜索,搜索,搜索。 http://stackoverflow.com/questions/3229458/is-there-a-way-to-have-parallel-for-each-loops – 2011-06-03 17:28:36

回答

11

您需要zip()

for a, b in zip(list_a, list_b): 
    # whatever 

當名單很長,你在使用Python 2.x中,你可能更喜歡itertools.izip()節省一些內存。

0

或者你也可以使用下面的語句列表合併:

map(lambda x,y,z: (x,y,z), list_a, list_b, list_c) 
+1

這也可以通過'map(None,list_a,list_b,list_c)來完成' 。與zip()不同的是,結果列表的長度等於最長的序列。不過,最好使用'itertools.izip_longest()'。 – 2011-06-03 15:51:00

+0

是的,你是對的)))謝謝你,將開始在我的代碼中使用它。 – 2011-06-03 15:52:48