将字符串格式坐标列表转换为数值型嵌套坐标列表的问题
字符串坐标列表转数值型嵌套列表的解决方案
问题场景
给定字符串格式的坐标列表:
my_list =['44324,-34244', '44885.1,-33445.6', '45373.1,-32849.8', '45380.1,-32625.6', '44635.7,-32285.6', '44635.7,-32285.6']
需要转换为数值型的嵌套坐标列表:
[[44324,-34244], [44885.1,-33445.6], [45373.1,-32849.8], [45380.1,-32625.6], [44635.7,-32285.6], [44635.7,-32285.6]]
使用代码coords = [map(float,i.split(",")) for i in my_list]时,输出为<map object at 0x7f7a7715d2b0>这类迭代器对象,无法得到预期结果。
原因分析
Python3中map()函数返回的是迭代器对象,而非直接生成列表,因此列表推导式得到的是一组迭代器,不是数值列表。
解决方法
方法1:将map对象转为列表
修改代码,把每个map结果用list()包裹,直接生成嵌套列表:
coords = [list(map(float, i.split(","))) for i in my_list]
方法2:使用嵌套列表推导式
用更直观的嵌套推导式遍历每个坐标字符串的拆分结果,转换为数值:
coords = [[float(coord) for coord in i.split(",")] for i in my_list]
两种方法运行后,都能得到预期的数值型嵌套坐标列表。
内容的提问来源于stack exchange,提问作者user110920
相关产品推荐
相关产品推荐

