【问题标题】:Extracting first and last element from sublists in nested list从嵌套列表中的子列表中提取第一个和最后一个元素
【发布时间】:2020-07-09 19:54:50
【问题描述】:

如何从嵌套列表的每个子列表中提取第一个和最后一个元素?

例如:

x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(x)
#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

想要的结果-

[[1, 3], [4, 6], [7, 9]]

这是我见过的最接近的-

a = [x[i][i] for i in (0, -1)]
print(a)
#[1, 9]

【问题讨论】:

    标签: python list list-comprehension


    【解决方案1】:

    你的想法是对的。如果列表中的列表只有一层深,您可以使用列表理解和 -1 索引访问第一个和最后一个元素,就像您尝试做的那样:

    a = [[sublist[0],sublist[-1]] for sublist in x]
    

    输出:

    >>> a
    [[1, 3], [4, 6], [7, 9]]
    

    【讨论】:

      【解决方案2】:

      以下是如何使用列表切片:

      x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
      x = [l[::len(l)-1] for l in x]
      print(x)
      

      输出:

      [[1, 3], [4, 6], [7, 9]]
      

      【讨论】:

        【解决方案3】:
        x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
        
        >>> [a[:1] + a[-1:] for a in x]
        [[1, 3], [4, 6], [7, 9]]
        
        

        我提取 2 个切片,一个包含第一个元素,一个包含最后一个元素,然后将它们连接起来。
        即使子列表的长度不同,它也能正常工作。

        【讨论】:

          【解决方案4】:

          这行得通:

          
          x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
          for item in x:
              print(item[0], item[2])
          
          

          为了你想要的结果,使用这个:

          
          x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
          new_list = []
          for item in x:
              new_list.append([item[0], item[2]])
          
          print(new_list)
          
          

          【讨论】:

          • 最好不要硬编码子列表的长度,而是使用 item[-1]
          【解决方案5】:

          我建议这样做。 list[-1] 语法旨在获取列表中您想要的最后一个元素。

          x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
          
          for elem in x:
              print(elem[0], elem[-1])
          

          这只是以标准格式打印它们,但按此顺序将它们放回新列表很简单。

          【讨论】:

            【解决方案6】:

            您可以遍历列表并从那里访问它们:

            x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
            
            out = []
            for arr in x:
                out.append([arr[0], arr[-1]])
            
            print(out)
            

            输出:

            [[1, 3], [4, 6], [7, 9]]
            

            此外,您可以使用列表推导:

            out = [[arr[0], arr[-1]] for arr in x]
            

            【讨论】:

              猜你喜欢
              • 2023-03-22
              • 2018-05-30
              • 2014-11-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-08-20
              • 1970-01-01
              • 2022-08-05
              相关资源
              最近更新 更多