将列表索引添加到另一个列表列表中

时间:2017-09-25 08:21:40

标签: python list loops append

嘿,我需要做的是我有以下列表:

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

我需要将列表h中的第一个索引添加到列表g中。结果应该如下表所示:

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])

4 个答案:

答案 0 :(得分: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]]
祝你好运!

答案 1 :(得分:0)

另一种方式:

hz内容(h*h自动增加邮政对象next(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))]

答案 2 :(得分: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]]

答案 3 :(得分:0)

我将外环越过h而不是g。不需要索引。

>>> 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列表中。