将字符串坐标列表转换为不带字符串的坐标列表

use*_*920 0 python list arraylist python-3.x

我有一个清单

flat_list =['53295,-46564.2', '53522.6,-46528.4', '54792.9,-46184', '55258.7,-46512.9', '55429.4,-48356.9', '53714.5,-50762.8']
Run Code Online (Sandbox Code Playgroud)

我怎样才能将它转换成

[[53295,-46564.2], [53522.6,-46528.4], [54792.9,-46184], [55258.7,-46512.9], [55429.4,-48356.9], [53714.5,-50762.8]]
Run Code Online (Sandbox Code Playgroud)

我试过

l = [i.strip("'") for i in flat_list]
Run Code Online (Sandbox Code Playgroud)

没有任何效果。

l = [i.strip("'") for i in flat_list]
Run Code Online (Sandbox Code Playgroud)

coords = [map(float,i.split(",")) for i in flat_list]
Run Code Online (Sandbox Code Playgroud)
print(coords) 
Run Code Online (Sandbox Code Playgroud)

给我 <map object at 0x7f7a7715d2b0>

rv.*_*tch 6

为什么要把事情复杂化呢?

如果没有任何内置函数,例如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)
Run Code Online (Sandbox Code Playgroud)

输出:

[53295.0, -46564.2, 53522.6, -46528.4, 54792.9, -46184.0, 55258.7, -46512.9, 55429.4, -48356.9, 53714.5, -50762.8]
Run Code Online (Sandbox Code Playgroud)

要以list列表结尾,您可以更改语句的顺序,然后在每个结果的for列表周围添加大括号str.split,如下所示:

[53295.0, -46564.2, 53522.6, -46528.4, 54792.9, -46184.0, 55258.7, -46512.9, 55429.4, -48356.9, 53714.5, -50762.8]
Run Code Online (Sandbox Code Playgroud)

输出:

[[53295.0, -46564.2], [53522.6, -46528.4], [54792.9, -46184.0], [55258.7, -46512.9], [55429.4, -48356.9], [53714.5, -50762.8]]
Run Code Online (Sandbox Code Playgroud)