Python 为什么不是';是否继续停止if循环中断?

Python 为什么不是';是否继续停止if循环中断?,python,python-3.x,Python,Python 3.x,我有一个命名多边形列表: import pandas as pd import geopandas as gp df = gp.GeoDataFrame([['a',Polygon([(1, 0), (1, 1), (2,2), (1,2)])], ['b',Polygon([(1, 1), (2,2), (3,1)])]], columns = ['name','geometry']) df = gp.GeoDat

我有一个命名多边形列表:

import pandas as pd
import geopandas as gp
df = gp.GeoDataFrame([['a',Polygon([(1, 0), (1, 1), (2,2), (1,2)])],
                    ['b',Polygon([(1, 1), (2,2), (3,1)])]],
                    columns = ['name','geometry'])
df = gp.GeoDataFrame(df, geometry = 'geometry')
和命名点列表:

points = gp.GeoDataFrame( [['box', Point(1.5, 1.75)],
                          ['cone', Point(3.0,2.0)],
                        ['triangle', Point(2.5,1.25)]],
                     columns=['id', 'geometry'], 
                     geometry='geometry')
我想返回多边形内的点的名称列表,以及它们与代码所属的多边形的名称:

n=0
for name in points:
    if df['geometry'][n].contains(points['geometry'][n]) == True:
        print(points['id'][n],df['name'][n]) 
    n+=1
这将返回第一个点,但循环在第二个点中断,因为
if
语句返回
False

我尝试使用
continue
语句让循环进入下一个迭代,如下所示:

n=0
for name in points:
    if df['geometry'][n].contains(points['geometry'][n]) == True:
        print(points['id'][n],df['name'][n]) 
    n+=1
    continue
但这仍然只返回第一个点和多边形的结果


如何阻止“False”结果中断循环?

您使用的for循环不正确<代码>点仅包含一个条目

for geo1, name, geo2, id in zip(df['geometry'], df['name'], points['geometry'], points['id']):
    if geo1.contains(geo2):
        print(id, name) 
还是要将每个df几何体与每个点进行比较

for geo1, name in zip(df['geometry'], df['name']):
    for geo2, id in zip(points['geometry'], points['id']):
        if geo1.contains(geo2):
            print(id, name) 

continue
在那里没有做任何事情,因为循环无论如何都会这样做。
if
语句没有脱离循环,因为它不包含
break
语句。在
for
循环结束时,一个无条件的
continue
没有效果。@kindall我看到了,在这种情况下,我一定是误解了原始循环中发生的事情。为什么它不继续到原始代码中的第三个点?您正在
中循环
name
。但似乎您真的想在
n
范围内循环。是的!第二个代码很有效,非常感谢。恐怕我对邮政编码不太熟悉,它在这儿干什么?