我有一系列经度和纬度的格式:
coord = [[lat1,long2],[lat2,long2],...,[latn,longn]]
我想将它们从度数转换为弧度,创建两个数组,一个包含经度,一个包含纬度。要做到这一点,我想使用map函数来避免for循环,我想做这样的事情:
lat_ = map(radians,coords[_][0])
其中_是更改的索引。
答案 0 :(得分:2)
虽然我通常会使用列表理解作为Karl的答案,但您明确地询问了如何使用map进行操作。简单的方法是使用lambda:
lat_ = map(lambda i:radians(i[0]), l)
lon_ = map(lambda i:radians(i[1]), l)
请注意,使用Python 3.x,这将给出一个生成器(特别是一个" map对象") - 但是根据你想要做的事情,这可能是一个优势。
答案 1 :(得分:1)
通常在Python中我们使用 list comprehension :
来完成此操作lats = [radians(coord[0]) for coord in coords]
longs = [radians(coord[1]) for coord in coords]
要将其转换为map
- 请说,您需要一个封装radians(coord[0])
操作的函数。
或者,您可以先准备纬度和度数的列表。内置函数zip
可以执行此操作(zip(*coords)
,因为每个列表被压缩在一起是函数的参数。)
请注意,在3.x中,map
和zip
都会返回生成器,您需要显式转换它们才能获得实际列表(例如{{1} })。
但严重的是,使用列表推导。它们是标准的习惯用语,它们更加清晰 - 它们使用方括号表示正在创建列表,然后在它们之间是根据输入数据对列表内容的实际描述。它没有比那更简单或更清楚。