【问题标题】:coverting list of string coordinates into list of coordinates without string将字符串坐标列表转换为没有字符串的坐标列表
【发布时间】:2022-11-17 06:15:22
【问题描述】:

我有一个清单

flat_list =['53295,-46564.2', '53522.6,-46528.4', '54792.9,-46184', '55258.7,-46512.9', '55429.4,-48356.9', '53714.5,-50762.8']

我怎样才能把它转换成

[53295,-46564.2, 53522.6,-46528.4, 54792.9,-46184, 55258.7,-46512.9, 55429.4,-48356.9, 53714.5,-50762.8]

我试过了

l = [i.strip("'") for i in flat_list]

没有任何作用。

l = [i.strip("'") for i in flat_list]

coords = [map(float,i.split(",")) for i in flat_list]
print(coords) 

给我 <0x7f7a7715d2b0 处的地图对象>

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    如果您可以接受 2 次操作而不是一次操作,请执行以下操作:

    list2 = map(lambda el: el.split(","), flat_list)
    list3 = [float(el) for sublist in list2 for el in sublist]
    

    或者

    import itertools
    list2 = map(lambda el: el.split(","), flat_list)
    list3 = list(map(float, itertools.chain.from_iterable(list2)))
    

    一行看起来像这样,但它很难阅读 IMO。

    my_list = [float(el) for sublist in map(lambda el: el.split(","), flat_list) for el in sublist]
    

    注意:上面的两个list2操作都不会在内存中创建一个元素序列,所以你不会在那里失去性能。

    【讨论】:

      【解决方案2】:

      为什么要把事情复杂化?

      没有任何内置的 mapitertools,这种带有嵌套的 list 理解的方法应该是一种相对简单和有效的方法。

      flat_list = ['53295,-46564.2', '53522.6,-46528.4', '54792.9,-46184', '55258.7,-46512.9', '55429.4,-48356.9',
                   '53714.5,-50762.8']
      
      result = [float(f) for pair in flat_list for f in pair.split(',')]
      
      print(result)
      

      输出:

      [53295.0, -46564.2, 53522.6, -46528.4, 54792.9, -46184.0, 55258.7, -46512.9, 55429.4, -48356.9, 53714.5, -50762.8]
      

      【讨论】:

        【解决方案3】:

        我看到坐标成对出现,所以为了首先将它们转换为整数或浮点数,我们需要将它们拆分,以便它们成为单个数字。

            flat_list =['53295,-46564.2', '53522.6,-46528.4', '54792.9,-46184', '55258.7,-46512.9', '55429.4,-48356.9', '53714.5,-50762.8']
        coordinates = []
        for pair in flat_list:
            coordinates.extend(pair.split(','))
        result = [float(x) for x in coordinates]
        

        这不是最短的方法,但我认为它可以完成工作。

        【讨论】:

          猜你喜欢
          • 2022-11-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-24
          • 1970-01-01
          相关资源
          最近更新 更多