2017-05-29 4 views
-2

の点リストの重複2Dポイントを削除するためのアルゴリズムを設計する方法:Iのような2D点リスト有するパイソン

points_list = [2,1]、[3,1]、[2 、1]、[2,2]、[2,1]、[2,2]]

重複した2次元の点を見つけて、それぞれの重複した点の1つのコピーをリストに残したいとします。以下のような結果を得るためにこのようなこと:私はこの問題を解決するために愚かな方法を知っている

result_list = [[2,1]、[3,1]、[2,2]]

が、エレガントな方法を見つけることができません。誰かが簡単な方法を提供できると願っています。ありがとう!

+1

は、 forループのループ – Vivick

+1

あなたは愚かな方法を知っていますか?それは何ですか?もしあなたが誰かがあなたを助けてくれるようにしたいのであれば、問題に何らかの努力を払う必要があります。 –

+0

OPが話している "愚かな"方法は、forループのforループです(O(n^2) )。 – SiggiSv

答えて

-1

ここでそれを行うための多くの可能な方法を列挙し、Webページ(私は第四1のために行くと思います)です。したがって

https://www.peterbe.com/plog/uniqifiers-benchmark

、上記のリンクから引用:

については
def noDuplicates(seq): 
    # order preserving 
    noDupes = [] 
    [noDupes.append(i) for i in seq if not noDupes.count(i)] 
    return noDupes 
+0

"もう答えは " – Vivick

+0

はい、しかし、それは副作用(非常に悪い形式)でリスト内包を使い、' .count'を使います。 '.count'は全体の解を二次的な時間にするリスト全体を反復するので、これは非常に非効率的なアプローチです。 –

+0

ありがとうございます。 –

関連する問題