Python 如何在使用if条件测试列表项时将项附加到列表中

Python 如何在使用if条件测试列表项时将项附加到列表中,python,geopandas,shapely,Python,Geopandas,Shapely,如果列表包含在指定多边形中,我将向列表中添加随机生成的点,直到获得所需的点数: def random_points_in_polygon(number, polygon): points = [] min_x, min_y, max_x, max_y = polygon.bounds i= 0 while i < number: point = Point(np.random.uniform(min_x, max_x), np.random.

如果列表包含在指定多边形中,我将向列表中添加随机生成的点,直到获得所需的点数:

def random_points_in_polygon(number, polygon):
    points = []
    min_x, min_y, max_x, max_y = polygon.bounds
    i= 0
    while i < number:
        point = Point(np.random.uniform(min_x, max_x), np.random.uniform(min_y, max_y))
        if polygon.contains(point):
            points.append(point)
            i += 1
    return points  # returns list of shapely point

# generate determined points within field polygon
points = random_points_in_polygon(pointscount, gdf.iloc[0].geometry)

如果新生成的点与之前添加的每个点都有一定距离,并且该点包含在多边形中,则该点将添加到列表中。我发现自己陷入了一个无限循环,试图在当前代码中添加这个附加条件。我该怎么做呢?

你不是在测试所有的点,而是在距离超过60个单位的每个点上添加
(除了
j
实际上不是
,而是列表中的索引)

使用
all()
函数测试
点的所有现有元素是否超过60个

    while i < number:
        point = Point(np.random.uniform(min_x, max_x), np.random.uniform(min_y, max_y))
        if polygon.contains(point) and all(p.distance(point) > 60 for p in points):
            points.append(point)
            i += 1
而i60,对于p in点):
点。追加(点)
i+=1

您能分享完整的代码吗?集成第二个条件后的最终代码是什么?将
all()
函数与测试每个元素距离的生成器一起使用。
all(j.distance(point)>60表示j in点)
    while i < number:
        point = Point(np.random.uniform(min_x, max_x), np.random.uniform(min_y, max_y))
        if polygon.contains(point) and all(p.distance(point) > 60 for p in points):
            points.append(point)
            i += 1