new_blobs = []
for blob in list(blobs):
expanded_blob = Blob(blob.x - merge_threshold, blob.y - merge_threshold, blob.width + merge_threshold, blob.height + merge_threshold)
for other_blob in list(blobs):
if other_blob != blob and expanded_blob.intersects(other_blob):
new_blob = Blob(blob.x, blob.y, blob.width, blob.height)
new_blob.expand_to_contain_blob(other_blob)
new_blobs.append(new_blob)
blobs.remove(other_blob)
blobs.remove(blob)
return blobs + new_blobs
这会导致此错误
ValueError: list.remove(x): x not in list
我正在尝试合并任何足够接近的矩形,首先我检查与扩展矩形的碰撞然后合并它们。 blob有一个扩展的方法,以便另一个矩形适合内部,所以我创建一个基于其中一个矩形的新矩形,并让它展开以适应另一个矩形然后我想摆脱它形成的两个矩形。
问题是我无法从我正在迭代的列表中删除一个项目,所以我做了一个副本,首先这意味着我现在将迭代已经删除的矩形并尝试再次删除它们,我试过保留一个使用过的矩形列表,每次检查是否使用了矩形,然后再检查它,我真的不想这样做,但它返回了同样的错误。
真的坚持这个。任何帮助或见解将不胜感激!
答案 0 :(得分:0)
list(blobs)
是临时转化
你需要给list_blobs =list(blobs)
然后循环
使用list_blobs.remove()
for blob in list_blobs:
expanded_blob = Blob(blob.x, blob.y, blob.width + merge_threshold, blob.height + merge_threshold)
for other_blob in list_blobs:
if other_blob != blob and expanded_blob.intersects(other_blob):
new_blob = Blob(blob.x, blob.y, blob.width, blob.height)
new_blob.expand_to_contain_blob(other_blob)
new_blobs.append(new_blob)
list_blobs.remove(other_blob)
list_blobs.remove(blob)
return list_blobs + new_blobs