我有X點的名單中刪除太近點,y座標:我怎樣才能在一個列表
List_coord=[(462, 435), (491, 953), (617, 285),(657, 378)]
此列表lenght(這裏是4元),可以從幾百個非常大的可達35000元素。
我想在此列表中刪除太靠近閾值的點。 注意:積分不會處於完全相同的位置。
我對於當前的代碼:
while iteration<5:
for pt in List_coord:
for PT in List_coord:
if (abs(pt[0]-PT[0])+abs(pt[1]-PT[1]))!=0 and abs(pt[0]-PT[0])<threshold and abs(pt[1]-PT[1])<threshold:
List_coord.remove(PT)
iteration=iteration+1
我可怕的代碼:)解說:
- 我檢查非常距離爲0,那麼就意味着我感到比較 相同點
- 然後我檢查x和y的距離..
- 迭代: 我需要很少的迭代來避免丟失一個刪除因爲循環內部的列表本身發生變化...
此代碼正在工作,但它是一個非常低的過程!
我相信還有另一種方法更容易,但我沒能找到,即使一些媒體鏈接回答問題,是貼近我..
注:我想避免使用額外的庫代碼如果有可能
如果您先將列表排序(以第一個座標爲關鍵字),該怎麼辦?那麼你只需要比較那些第一個座標在你的閾值內的元素。 –
我需要比較兩個座標,因爲有些點可以有相同的x或非常接近的x,但不一樣的y .. – bastoon
是的,當然。但是在一個排序列表中,你只需要比較很少的元素(而不是像現在這樣做的整個列表)。 –