私は違いリストx
との間y
:
>>> x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> y = [1, 3, 5, 7, 9]
>>> x - y
# should return [0, 2, 4, 6, 8]
ベストアンサー1
リストの内包表記を使用して、元の値を維持しながら差分を計算します。注文からx
:
[item for item in x if item not in y]
リストプロパティ(順序など)が必要ない場合は、差を設定する、としてその他の回答提案する:
list(set(x) - set(y))
x - y
中置構文を許可するには、__sub__
以下を継承するクラスでオーバーライドしますlist
。
class MyList(list):
def __init__(self, *args):
super(MyList, self).__init__(args)
def __sub__(self, other):
return self.__class__(*[item for item in self if item not in other])
使用法:
x = MyList(1, 2, 3, 4)
y = MyList(2, 5, 2)
z = x - y