2016-12-04 12 views
0

を維持し、別のリスト内のエントリではないのリストを取得するには、リスト内包表記を使用して、のはだから私は、リストを持っているため、数量

a = [1, 2, 3, 4, 2, 1, 2, 4] 

1を言わせて二回、2は4が表示されます2回、3回表示されます表示されます。今すぐ定義する

b = [4, 2, 2] 

ここでは、bの中にはないaのエントリを持つ新しいリストcが必要です。それはむしろ、各エントリの多くはBであるかを見てから、多くのことを取り除くよりも、Bである場合

c = [x for x in a if x not in b] 

はしかし、これはエントリーが省略されています。私は、リストの内包表記を使用してみました。

c == [1, 3, 1] 

誰でもいくつかの助けを提供することができ、私はそれが

c == [1, 3, 1, 2, 4] 

になりたいでしょうか?

+0

をこれはdefinetelyありがとうdifflib http://stackoverflow.com/a/15646006/7086023 – lizaveta

答えて

4

あなたはリストbをループし、リストaから各要素を削除することができます。

for i in b: 
    a.remove(i) 

a 
# [1, 3, 1, 2, 4] 
+1

を参照してくださいすることができます!質問をすることで、私はこのルートについて考えるようになり、私も同じ結論に達しました。 –

+0

ニース&シンプルな答え!注目すべきことの1つは、O(n * m)の複雑さです。この複雑さは、O(n + m)に縮小できますが、そのような明確で簡潔な実装ではありません。これを行うには、おそらく 'collections.Counter'を使ってヒストグラムを使いたいでしょう。 – orip

関連する問題