1. ホーム
  2. python

[解決済み】Pythonのリストの引き算操作

2022-02-08 11:24:13

質問

これに似たようなことをしたいのですが。

>>> x = [1,2,3,4,5,6,7,8,9,0]  
>>> x  
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]  
>>> y = [1,3,5,7,9]  
>>> y  
[1, 3, 5, 7, 9]  
>>> y - x   # (should return [2,4,6,8,0])

しかし、これはpythonのリストではサポートされていません。 何か良い方法はないでしょうか?

どのように解決するのですか?

リスト内包を使用する。

[item for item in x if item not in y]

を使いたい場合は - infix構文にすればいいのです。

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   

しかし、リストプロパティが絶対に必要でない場合(例えば、順序付けなど)、他の回答が推奨するようにセットを使用すればよいのです。