gpt4 book ai didi

python - 检查列表是否不包含列表

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:16 25 4
gpt4 key购买 nike

首先,如果这实际上是重复的,我很抱歉 - 我花了过去三个小时试图解决这个问题,但未能找到任何解决方案。

问题

我使用列表将坐标表示为 [x, y]。我想查明坐标列表是否不包含指定坐标。例如,如果我有坐标列表 [[3.3, 4.4], [5.5, 6.6]] 和坐标 [1.1, 2.2],我想要一个返回True,因为坐标不在坐标列表中。

可能值得注意的是,坐标列表是使用 OpenCV 函数 cv2.findContours()cv2.minAreaRect() 和最后的 cv2 生成的.boxPoints() 生成列表列表。这些坐标存储在字典中并从那里访问;调用坐标的 print() 给我格式为 [array([3.3, 4.4], dtype=float32), array([5.5, 6.6], dtype=float32 )] 而不是格式 [[3.3, 4.4], [5.5, 6.6]] 当我 print() 之后直接给出坐标使用 cv2.boxPoints() 找到它们。

我尝试过的

我尝试使用 this question 的答案但我收到错误 ValueError: The truth value of an array with more than one element is ambiguous.使用 a.any() 或 a.all()

该尝试的代码如下所示:

for coordinate in box:
if coordinate not in specialCoordinates:
# operations go here

然后我尝试使用 this question about a.all() 的答案但我得到了同样的错误。

该尝试的代码如下所示:

for coordinate in box:
if not all(coordinate == special for special in specialCoordinates):
# operations go here

我也试过这个:

for coordinate in box:
if all(coordinate != special for special in specialCoordinates):
# operations go here

附加信息

当我在 Python 2.7 解释器中尝试以下操作时,上面提到的格式 if coordinate not in specialCoordinates 有效:

Win32 上的 Python 2.7.15(v2.7.15:ca079a3ea3,2018 年 4 月 30 日,16:30:26)[MSC v.1500 64 位 (AMD64)]

输入“help”、“copyright”、“credits”或“license”以获得更多信息。

>>> a = [[3.3, 4.4], [5.5, 6.6]]

>>> b = [1.1, 2.2]

>>> b不在a中

正确

最佳答案

这里的主要问题是列表中的 numpy 数组元素具有与之关联的精度,例如:a = [np.array([3.3, 4.4], dtype='float32'), np.array([5.5, 6.6], dtype='float32')]这相当于:[数组([ 3.29999995, 4.4000001 ], dtype=float32), 数组([ 5.5 , 6.5999999], dtype=float32)]

因此,如果您在 a 中查找 [3.3, 4.4],它不会在那里,因此您可能想要尝试一下精度或进行一些转换。

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

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