2017-09-25 65 views
0
的另一份名单

嘿,我需要做的是,我有以下列表:加入列表索引列表

g=[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 

和我需要添加从名单小时第一索引列表克结果应该是这样的名单如下:

g=[[1,2,3,10,14],[4,5,6,11,15],[7,8,9,12,16]] 

,这是我迄今所做的,但它不工作:

g=[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 
for i in range(len(g)): 
    for u in range(len(g[0])): 
     g[i].append(h[i][u]) 

回答

1
g=[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 

idx = 0 
for L1 in g: 
    for L2 in h: 
     L1.append(L2[idx]) 
    idx+=1 

g 

返回

[[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 

祝你好运!

+0

感谢帮助我的人 –

+0

更好地使用'enumerate',就是这么做的。 –

0

另一种方式:

h内容(*h),next(hz)自动递增制作一个zip对象hz的列表理解走过g
[*next(hz)](或list(next(hz)))从zip对象的元组转换成列表

g =[[1,2,3],[4,5,6],[7,8,9]] 
h=[[10,11,12,13],[14,15,16,17]] 

hz = zip(*h) 
g = [e + [*next(hz)] for e in g] 

g 
Out[133]: [[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 

对于一些目标是 '一个班轮':

g = [e + list(f) for e, f in zip(g, zip(*h))] 
0

如果使用enumerate()和列表理解,你可以做一个更快的一行代码:

g = [n + [m[i] for m in h] for i, n in enumerate(g)] 
# Returns: [[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 
0

我会做较H代替克外环。不需要索引。

>>> g = [[1,2,3],[4,5,6],[7,8,9]] 
>>> h = [[10,11,12,13],[14,15,16,17]] 
>>> for hlist in h: 
     for glist, hvalue in zip(g, hlist): 
      glist.append(hvalue) 

>>> g 
[[1, 2, 3, 10, 14], [4, 5, 6, 11, 15], [7, 8, 9, 12, 16]] 

换句话说,而不是采取每个G-列表,并从H-列表获取附加价值,把每H-列表,并通过G-列表传播其价值观。