【问题标题】:Splitting strings within nested lists in Python and converting to float?在 Python 的嵌套列表中拆分字符串并转换为浮点数?
【发布时间】:2020-07-29 19:20:19
【问题描述】:

我正在尝试将嵌套的字符串列表拆分为嵌套的浮点列表。我的嵌套列表如下:

nested = [['0.3, 0.4, 0.2', '0.5, 0.1, 0.3'], ['0.7, 0.4, 0.2'], ['0.4, 0.1, 0.3']]

我想要的输出将是一个嵌套列表,其中这些值保留在其子列表中并转换为浮点数,如下所示:

nested = [[0.3, 0.4, 0.2, 0.5, 0.1, 0.3], [0.7, 0.4, 0.2], [0.4, 0.1, 0.3]]

在尝试处理具有多个字符串(即第一个元素)的子列表时遇到了困难。我找到了一些示例,例如这里How do I split strings within nested lists in Python?,但此代码仅处理具有一个字符串元素的子列表,我不确定如何将其应用于具有多个字符串的子列表。

我试图避免对任何内容进行硬编码,因为这是针对较大数据集的脚本的一部分,并且子列表长度可能会有所不同。

如果有人有任何想法,我将不胜感激。

【问题讨论】:

    标签: python list list-comprehension nested-lists


    【解决方案1】:
    result = [[float(t) for s in sublist for t in s.split(', ')] for sublist in nested]
    

    相当于

    result = []
    for sublist in nested:
        inner = []
        for s in sublist:
            for t in s.split(', '):
                inner.append(float(t))
        result.append(inner)
    

    【讨论】:

      【解决方案2】:

      好的,从你的例子开始:

      myNestedList = [['0.3, 0.4, 0.2', '0.5, 0.1, 0.3'], ['0.7, 0.4, 0.2'], ['0.4, 0.1, 0.3']]

      myOutputList = []
      for subList in myNestedList:
          tempList = []
          for valueStr in sublist:
              valueFloat = float( valueStr )
              tempList.append( valueFloat )
          myOutputList.append( tempList )
      

      它看起来像这样。 (没有时间尝试,但非常接近正确)

      【讨论】:

        【解决方案3】:
        nested = [['0.3, 0.4, 0.2', '0.5, 0.1, 0.3'], ['0.7, 0.4, 0.2'], ['0.4, 0.1, 0.3']]
        
        new_nested = [[float(number) for strings in sublist for number in strings.split(', ')] for sublist in nested]
        
        print(new_nested)
        
        new_nested = list()
        
        for sublist in nested:
          sublist_new_nested = list()
          for strings in sublist:
            for number in strings.split(', '):
              sublist_new_nested.append(float(number))
          new_nested.append(sublist_new_nested)
        
        print(new_nested)
        

        输出:

        [[0.3, 0.4, 0.2, 0.5, 0.1, 0.3], [0.7, 0.4, 0.2], [0.4, 0.1, 0.3]]
        [[0.3, 0.4, 0.2, 0.5, 0.1, 0.3], [0.7, 0.4, 0.2], [0.4, 0.1, 0.3]]
        

        【讨论】:

          猜你喜欢
          • 2013-01-30
          • 1970-01-01
          • 1970-01-01
          • 2021-06-19
          • 2019-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-08
          相关资源
          最近更新 更多