繁体   English   中英

组合 2 个列表以在列表中创建一对坐标

[英]Combine 2 lists to make a pair of coordinates in a list

我需要组合两个列表(经度/纬度)中的值,以获得一个组合列表(不是元组或字符串格式) 我的简单 for 循环没有正确迭代第一个列表,它使用一个值来匹配所有值第二个列表,在移动到下一个值之前。

for a in location1:
    for b in location2:
        location3.append(a+b)
location3

我得到了这个(一个'a'匹配所有'b'的第一个):

[[41.7770923949, -87.6060037796],
[41.7770923949, -87.6547753762],
[41.7770923949, -87.5716351762],

我希望这在两个列表中匹配相同的序列:

[41.7770923949, -87.6060037796],
[41.784575915, -87.6547753762],

此外,尝试使用 zip/map 进行如下操作:

list(map(lambda X: (X[0],X[1]), list(zip(location1,location2))))

给我这个不正确的形式(还有其他方法吗?):

[([41.7770923949], [-87.6060037796]),
([41.784575915], [-87.6547753762]),

您需要直接使用 zip 来遍历这两个列表,而不是使用您的 lambda。

l1 = [ 2, 4, 6, 8 ]
l2 = [ 1, 3, 5, 7 ]

coord = []

for a, b in zip( l1, l2 ):
    coord.append( [ a, b ] )

print( coord )

顺便说一句,你的问题与这个有关。

您的代码中不需要第二个 for 。 我认为你的数据结构是这样的:

location1 = [[1], [2], [3]]
location2 = [[4], [5], [6]]

然后试试这个:

location3 = []
for i, _ in enumerate(location1):
    location3.append(location1[i]+location2[i])
print(location3)

结果:

[[1, 4], [2, 5], [3, 6]]

您需要同时显示变量location1 and location 2 最终解决方案将取决于它。

案例1 :两个变量都是列表列表,然后下面的解决方案适合您。

location1 = [[1], [2], [3]]
location2 = [[4], [5], [6]]
location3 = list(map(lambda coord: [coord[0][0],coord[1][0]], zip(location1,location2)))
print(location3) 

案例2 :两个变量的整数列表

location1 = [1, 2, 3]
location2 = [4, 5, 6]
location3 = list(map(lambda coord: list(coord), zip(location1,location2)))
print(location3) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM