2011-06-03 98 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