あるリストから別のリストを減算するにはどうすればよいですか? 質問する

あるリストから別のリストを減算するにはどうすればよいですか? 質問する

私は違いリスト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   

おすすめ記事