2017-03-27 14 views
-1

私はを持っています。リストにはタプル(x、y)を含むリストが含まれています。より大きな問題の一部として、私はリストを得ました。タプルのリスト内の各タプル要素をリスト 'u'の他のタプルリストの要素と比較すると、次のようになります。私は例えばu [0]リストに属する要素(3,10)は、リストu [1]、u [2]、u [3] ...の中の同じx座標を持つ要素と比較されます。 X座標が等しい場合、最も高いy座標を含む要素はそのリストに残るが、最も小さいy座標を有する要素は除去されるべきである。x座標とy座標を比較し、タプルのリストから要素を削除する

u = [[(2, 10), (3, 10), (4, 10), (5, 10), (6, 10), (7, 10), (8, 10), (9, 10)], 
[(3, 15), (4, 15), (5, 15), (6, 15), (7, 15)], 
[(5, 12), (6, 12), (7, 12), (8, 12), (9, 12), (10, 12), (11, 12), (12, 12)], 
[(15, 10), (16, 10), (17, 10), (18, 10), (19, 10), (20, 10)], 
[(19, 8), (20, 8), (21, 8), (22, 8), (23, 8), (24, 8)]] 

(3,10) of u[0] compared against (3,15) of u[1] => (3,15) survives and (3,10) gets eliminated from the list. 

だから、私は誰かが、このための簡単でより神託ソリューションで私を助けることができると思います。

def filterAllmax(self, u): 
     u = [item for sub in u for item in sub] 
     for i in range(len(u)): 
      for j in range(i, len(u)): 
       for k in u[i]: 
        if k[0][0] in u[j]: 
         m += [u[i] for i, v in enumerate(u[j]) if v[1] < k[0][1] # store the values that have y co-ordinates less than the value 
     for i in m: 
      u.remove(i) 
     return u 

注:事前に感謝

は、ここに私がやっていることだ、私のクエリを投稿する前に、私は 関連するソリューションのためのstackoverflowを検索しましたが、私は合うものを見つけることができませんでした私のニーズ。

+1

あなたのためにコードを記述していただきたいようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この作業を実証するには、これまでに書いたコード([mcve]の作成)、サンプル入力(あれば)、期待される出力、実際に出力するもの(出力、トレースバック、等。)。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [ツアー]と[質問]を確認します。 – TigerhawkT3

+0

これはコードスニペットサイトではないため、この特定のタスクの既存のスニペットを見つけられなかったことには驚いていません。 – TigerhawkT3

+0

これはコードスニペットサイトではありません。そして私は、リストのリスト内のタプルを比較する方法を探していました。私は正確な解決策は必要ありません。私はこれのためのアプローチが必要です。私はこれまでに試したことを投稿します。 – vamsi465

答えて

0

私はPythonicの方法で書きました。

print {i1[0]: max(0,*(i[1] for i in sum(u, []) if i[0] == i1[0])) for i1 in sum(u, [])} 

結果:

{2: 10, 3: 15, 4: 15, 5: 15, 6: 15, 7: 15, 8: 12, 9: 12, 10: 12, 11: 12, 12: 12, 15: 10, 16: 10, 17: 10, 18: 10, 19: 10, 20: 10, 21: 8, 22: 8, 23: 8, 24: 8} 

sum(u, [])はフラットなリストにネストされたリストを変換します

[(2, 10), (3, 10), (4, 10), (5, 10), (6, 10), (7, 10), (8, 10), (9, 10), (3, 15), (4, 15), (5, 15), (6, 15), (7, 15), (5, 12), (6, 12), (7, 12), (8, 12), (9, 12), (10, 12), (11, 12), (12, 12), (15, 10), (16, 10), (17, 10), (18, 10), (19, 10), (20, 10), (19, 8), (20, 8), (21, 8), (22, 8), (23, 8), (24, 8)] 

その後、リストを反復処理の最大値を取得するためにmax()を使用してdictの理解を使います結果を返す。

関連する問題