You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遍历cv2.KeyPoint列表删除元素后过滤结果不符合预期如何解决

问题原因

你遇到的问题是遍历列表的同时直接删除列表元素导致的索引错位。
当你正向遍历列表时,每次删除一个元素,列表长度会自动减1,位于被删元素后方的所有元素会统一向前移动一位,遍历指针却还是照常向后移动,就会跳过紧邻被删元素的下一个元素,最终导致大量符合删除条件的元素没有被遍历到,自然也不会被删除。

解决方案
  • 方案1:使用列表推导式生成新的过滤后列表(最推荐,代码简洁效率高)
keypoints = [key for key in keypoints if key.size <= 50]
  • 方案2:如果必须修改原列表,改为倒序遍历后删除
for i in range(len(keypoints)-1, -1, -1):
    if keypoints[i].size > 50:
        keypoints.pop(i)

两种写法都可以得到符合预期的过滤结果,过滤后列表长度会和你统计的小于50的元素数量匹配。

内容的提问来源于stack exchange,提问作者Itay Nega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:48:04