【发布时间】:2019-08-07 22:33:52
【问题描述】:
我正在制作一个脚本来比较两个地址之间的距离,这些地址存储在两个不同的 .csv 文件中,并与 itertools.product 结合在一起。
比较是一个if 条件,用于检查地址之间是否相距 1 公里。
addresses1 中的每个地址都需要与addresses2 中的每个地址进行比较。
如果addresses1中的地址与addresses2中的地址相距1公里,则需要进行下一次比较。因为列表太长,等待是浪费时间继续下一个。 - 这就是问题所在。
我尝试使用continue,但它不起作用。
假设我有两个地址列表:
addresses1 = ["Address1","Address2","Address3","Address4"]
addresses2 = ["compAddress1","compAddress2,"compAddress3","compAddress4","compAddress5"]
producted_list = list(itertools.product(addresses1, addresses2))
for a,b in producted_list:
BLOCK OF CODE WITH GEOLOCATIONS
if(distance == 1km):
print("Addresses are within 1km from each other, move on next one")
continue
让我们看看它是如何比较的:
a[0] -> b[0]
a[0] -> b[1]
a[0] -> b[2]
a[0] -> b[3]
a[0] -> b[4]
a[1] -> b[0]
a[1] -> b[1]
a[1] -> b[2]
a[1] -> b[3]
a[1] -> b[4]
a[2] -> b[0]
a[2] -> b[1]
a[2] -> b[2]
a[2] -> b[3]
a[2] -> b[4]
.
.
.
假设a[1] 与b[0] 匹配,我想立即继续a[2] 而不是继续a[1] 与b[] 的其余部分相比
我尝试使用来自 Eric https://stackoverflow.com/a/14829934/11417917 的代码
与
for a in b:
def doWork():
for c in d:
if somecondition:
return # <continue the for a in b loop?>
doWork()
但它不工作,它中断,或者它需要改变。
【问题讨论】:
-
你最好写两个循环而不是试图过滤产品。
-
这是同一回事,如果我像其他编程语言一样使用两个 for 循环,则无法正常工作。
标签: python python-3.x csv itertools