【问题标题】:How to remove double [] from a list? [closed]如何从列表中删除双 []? [关闭]
【发布时间】:2020-06-24 19:10:28
【问题描述】:

我有一个这样的列表:

  my_lst = [[1,2,3,4]]

我想知道如何从列表中删除 [] 以获得以下列表:

 my_lst = [1,2,3,4]

【问题讨论】:

  • @Sociopath:它可能在 dict 中,从技术上讲,它是现代 Python 中的合法类型注释,但是是的,就其本身而言,它不太可能是任何人真正想要的。

标签: python list dataframe


【解决方案1】:

你有一个列表。

my_lst = my_lst[0] #get the first list of the list

【讨论】:

    【解决方案2】:
    my_lst = my_lst[0]
    

    你有一个包含一个元素的列表,它本身就是一个列表。您希望变量只是第一个元素,即列表 1、2、3、4。

    【讨论】:

      【解决方案3】:

      双重[[]] 是因为您有一个包含listlist。要取出内部的list,只需对其进行索引:

      my_lst = my_lst[0]
      

      或解压:

      [my_lst] = my_lst
      

      拆包有一个温和的优势,如果外部list 不包含一个值(而my_lst[0] 会默默地丢弃任何额外的值),它会给您一个错误。

      There are many other options.

      【讨论】:

        【解决方案4】:

        如果外部列表的长度可能超过一,您可以使用itertools 来实现此目的,而无需编写显式循环。

        In [47]: import itertools                                                       
        
        
        In [49]: list(itertools.chain.from_iterable([[1, 2, 3], [1, 2]]))                       
        Out[49]: [1, 2, 3, 1, 2]
        

        【讨论】:

          【解决方案5】:

          您可以使用sum 减少一维。

          my_lst=sum(my_lst,[])
          # [1,2,3,4]
          

          【讨论】:

          • 这是一个非常糟糕的通用方法。对于单个内部 list 情况,它恰好很好(如果有点奇怪),但是当涉及到 lists 的迭代的广义展平时,它是一个 Schlemiel the Painter's algorithm,具有二次运行时(其中 listifying the itertools.chain/itertools.chain.from_iterable 生成的迭代器是该情况的正确解决方案,具有线性运行时间)。
          猜你喜欢
          • 2021-08-27
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 2021-05-26
          • 2020-01-09
          • 2023-03-23
          • 2022-11-24
          • 1970-01-01
          相关资源
          最近更新 更多