【问题标题】:adding list index into a another list of lists将列表索引添加到另一个列表列表中
【发布时间】:2018-03-06 03:37:02
【问题描述】:

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

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

【问题讨论】:

    标签: python list loops append


    【解决方案1】:

    我会在 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-list 并从 h-lists 中获取其他值,而是获取每个 h-list 并将其值分布在 g-lists 上。

    【讨论】:

      【解决方案2】:

      另一种方式:

      h 内容(*h)创建一个压缩对象hznext(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))]
      

      【讨论】:

        【解决方案3】:

        如果你使用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]]
        

        【讨论】:

          【解决方案4】:
          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]]
          

          祝你好运!

          【讨论】:

          • 最好使用enumerate,这就是它的用途。
          猜你喜欢
          • 2022-06-13
          • 2021-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多