gpt4 book ai didi

python - 检查列表是否在列表列表中

转载 作者:行者123 更新时间:2023-11-28 22:41:44 25 4
gpt4 key购买 nike

我将经纬度点存储在一个列表中,一个点簇存储在一个列表中,以及一个簇列表,这样:

point1 = [100,50]
point2 = [100,49]
point3 = [120,50]
point4 = [120,49]
cluster1 = [point1,point2]
cluster2 = [point2,point4]
clusterList = [cluster1,cluster2]

我想检查一个点(作为经纬度列表)是否在集群列表中的任何集群中。如果不是,我想进行手术。

checked = []
for cluster in clusterList:
if point5 not in cluster:
checked.append(1)
else:
checked.append(0)
if all(checked):
clusterList.append([point])

这个解决方案可行,但看起来不是很优雅。我想知道是否有一种方法可以通过完全避免 for 循环或不必创建“已检查”对象然后检查 all() 条件来执行此操作。

编辑

我想执行一次操作,并且仅当新点不在任何集群中时。为了清楚起见,我正在检查一个点是否在一个集群中。如果不是,我会为该点创建一个新集群。

最佳答案

可以这样表达:

>>> to_check = [120, 49]
>>> "Not in" if not any(to_check in cluster for cluster in clusterList) else "In"
"In"

或者这个:

>>> to_check = [120, 49]
>>> "Not in" if all(to_check not in cluster for cluster in clusterList) else "In"
"In"

注意:我正在使用 any() + not 而不是 all() .它比使用 all() 更快,因为它很快就会失败。例如。如果前者在第一个集群中找到点,它将不会检查所有其他集群。后者将检查每个集群,即使在第一个集群中找到了点。

UPD 之前的说法是不正确的。性能与使用 all() 相同,因为 all() 也是惰性的。

关于python - 检查列表是否在列表列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com