如何将字符串坐标列表转换为数值坐标列表?(Python)
字符串坐标列表转数值型二维列表
原始字符串格式的坐标列表:
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]无效:列表元素本身是不含单引号的字符串,单引号是Python定义字符串的语法符号,并非元素内容,所以这个操作对转换没有帮助。 - 执行
coords = [map(float,i.split(",")) for i in flat_list]输出<map object at 0x7f7a7715d2b0>:Python 3中map()函数返回的是迭代器对象,而非直接生成列表,需要显式转换才能得到预期的数值数组。
正确实现方案
方案一:将map对象转为列表
在列表推导式中把map的结果转换为列表:
coords = [list(map(float, i.split(","))) for i in flat_list] print(coords)
方案二:嵌套列表推导式(更直观)
直接通过两层列表推导式逐个转换坐标值:
coords = [[float(num) for num in i.split(",")] for i in flat_list] print(coords)
以上两种方法都能输出你需要的数值型二维坐标列表。
内容的提问来源于stack exchange,提问作者user110920
相关产品推荐
相关产品推荐

