4

リスト内のリストを新しいリストに削除するにはどうすればよいですか?したがって、aからbを減算して、新しいリストcを作成しますか?

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,]

b = [3, 4, 5, 6]

c = []?
4

4 に答える 4

11

リストをセットに変換し、セットの差を取ります。

c = list(set(a).difference(set(b))
于 2013-03-03T18:11:54.617 に答える
7

注文を維持し、セットメンバーシップの使用をスピードアップするには:

bs = set(b)
c = [x for x in a if x not in bs]
于 2013-03-03T18:16:44.937 に答える
5

または、リスト内包表記を使用します。

c = [x for x in a if x not in b]
于 2013-03-03T18:12:40.380 に答える
2

何をしているのかによっては、そもそもセットを使用したほうがよい場合があります。

>>> a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }
>>> b = {3, 4, 5, 6}
>>> a
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b
set([3, 4, 5, 6])
>>> a.difference(b)
set([0, 1, 2, 7, 8, 9])

collections.Counter複数の繰り返しをカウントする場合は、もう1つの便利な標準タイプです。

>>> from collections import Counter as C
>>> a = C([1,1,1,2,2,3,4])
>>> b = C([1,4,5])
>>> a - b
Counter({1: 2, 2: 2, 3: 1})
于 2013-03-03T18:16:04.310 に答える