0

aにないbの要素で構成される配列(c)を作成するにはどうすればよいですか?

a=[1,2,"ID123","ID126","ID124","ID125"]
b=[1,"ID123","ID124","ID125","343434","fffgfgf"]
c= []

リスト内包表記を使用せずにこれを行うことはできますか?

4

3 に答える 3

6

リストが長い場合は、a最初に次のセットを作成します。

a_set = set(a)
c = [x for x in b if x not in a_set]

要素の順序が重要でない場合は、セットを使用してください。

c = list(set(b) - set(a))

-Pythonリストは、Ruby配列のように、直接演算子を提供しません。

于 2012-06-12T17:54:04.150 に答える
1

リスト内包表記の使用は最も簡単です。

[i for i in b if i not in a]
c
['343434', 'fffgfgf']

ただし、リスト内包表記を本当に使用したくない場合は、ジェネレータ式を使用できます。

c = (i for i in b if i not in a)

これはまた、メモリ内に結果リストを一度に生成することはありません(それが懸念される場合)。

于 2012-06-12T17:52:42.620 に答える
0

以下はそれを行います:

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

が長い場合a、それをセットに変換するとパフォーマンスが向上する可能性があります。

a_set = set(a)
c = [v for v in b if v not in a_set]
于 2012-06-12T17:55:15.553 に答える