我有这个清单:
list = [[0, 5], [0, 3, 6], [1, 2, 4], [1, 7], [0, 1]]
每个元素指的是坐标列为两个数组的点:
Lon = [2.0,3.0,5.0,2.0,6.0,1.0,3.0,4.0]
Lat = [4.0,6.0,5.0,3.0,4.0,2.0,1.0,7.0]
我正在尝试创建一个格式如下的数组:
[[Lon_0,Lat_0],[Lon_5,Lat_5]]
[[Lon_0,Lat_0],[Lon_3,Lat_3],[Lon_6,Lat_6]]
...
我尝试了zip功能,但缺少了一些内容,我不知道如何继续前进:
for m in list:
for n in m:
Coord = zip((Lon[n], Lat[n]))
感谢任何帮助
答案 0 :(得分:1)
我猜你需要这样的东西:
[[[Lon[i], Lat[i]] for i in sub] for sub in mylist]
#[[[2.0, 4.0], [1.0, 2.0]],
# [[2.0, 4.0], [2.0, 3.0], [3.0, 1.0]],
# [[3.0, 6.0], [5.0, 5.0], [6.0, 4.0]],
# [[3.0, 6.0], [4.0, 7.0]],
# [[2.0, 4.0], [3.0, 6.0]]]
答案 1 :(得分:1)
您可以遍历列表中每个元素内的每个索引,并使用Lon, Lat
值重建条目。
以下是代码:
# Sample data
list = [[0, 5], [0, 3, 6], [1, 2, 4], [1, 7], [0, 1]]
Lon = [2.0,3.0,5.0,2.0,6.0,1.0,3.0,4.0]
Lat = [4.0,6.0,5.0,3.0,4.0,2.0,1.0,7.0]
# Construct result list
result = []
for entry in list:
elem = []
for index in entry:
elem.append([Lon[index], Lat[index]])
result.append(elem)
# Sample output
print(result)
[[[2.0, 4.0], [1.0, 2.0]],
[[2.0, 4.0], [2.0, 3.0], [3.0, 1.0]],
[[3.0, 6.0], [5.0, 5.0], [6.0, 4.0]],
[[3.0, 6.0], [4.0, 7.0]],
[[2.0, 4.0], [3.0, 6.0]]]
以更“pythonic”的方式,您可以使用单行命令(可能更难理解,但完全相同):
result = [[[Lon[index], Lat[index]] for index in entry] for entry in list]