2014-07-18 26 views
-2

的名单上有2所列出:转换2只列出了进入名单

x = ['a','b','c'] 
y = ['d','e','f'] 

我需要列出的一个列表:

z = [['a','d'],['b','e'],['c','f']] 

我的尝试:

# Concatenate x and y with a space 
w = [] 
for i in range(len(x)): 
    w.append(x[i]+" "+y[i]) 

# Split each concatenated element into a sublist 
z = [] 
for i in range(len(w)): 
    z.append(w[i].split()) 

有直接执行此操作而不使用2 for循环的方法? (我是很新的Python)的

回答

5

您可以使用zipitertools.izip如果名单是大):

>>> x = ['a','b','c'] 
>>> y = ['d','e','f'] 
>>> zip(x, y) 
[('a', 'd'), ('b', 'e'), ('c', 'f')] 
>>> map(list, zip(x, y)) # If you need lists instead of tuples 
[['a', 'd'], ['b', 'e'], ['c', 'f']] 
>>> 
+0

这很酷!谢谢! –

0

如果两个相同的长度,使用enumerate

[[a,y[ind]] for ind, a in enumerate(x)] 

更效率高于zip

In [6]: %timeit [[a,y[ind]] for ind,a in enumerate(x)] 
1000000 loops, best of 3: 970 ns per loop 

In [7]: %timeit map(list, zip(x, y)) 
1000000 loops, best of 3: 1.48 µs per loop 
+0

什么是downvote? –