【问题标题】:Join certain elements in list of lists加入列表列表中的某些元素
【发布时间】:2021-08-18 05:00:50
【问题描述】:

假设我有一个如下所示的列表:

lst = [['a','b','c','d'],['e','f','g','h'],['i','j','k','l']]

我可以在lst 中加入每个列表中的前两个元素,使得输出如下所示:

new_list = [['ab','c','d'],['ef','g','h'],['ij','k','l']]

如果这是一个平面列表,我会写lst[0:2] = [' '.join(lst[0:2])]。我尝试用列表理解嵌套这段代码:

new_list = [[''.join(x[0:2]) for x[0:2] in group] for group in lst]

但我没有得到想要的输出。有谁知道我的代码有什么问题以及我如何完成上面的输出?

【问题讨论】:

    标签: python list


    【解决方案1】:

    使用列表理解:

    >>> [["".join(l[:2])]+l[2:] for l in lst]
    [['ab', 'c', 'd'], ['ef', 'g', 'h'], ['ij', 'k', 'l']]
    

    【讨论】:

      【解决方案2】:

      作为@not_speshal 答案的一个细微变化,您可以将列表理解与 splat 运算符一起使用:

      lst = [['a','b','c','d'],['e','f','g','h'],['i','j','k','l']]
      res = [[a + b, *rest] for a, b, *rest in lst]
      

      【讨论】:

      • 这个答案对我来说更像 Pythonic。在这种情况下,它比使用带有常量的索引要好,而且看起来更干净(即不那么混乱)。
      猜你喜欢
      • 2021-08-23
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多