Python列表减法操作

新手上路,请多包涵

我想要这样的东西:

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

原文由 daydreamer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 414
2 个回答

使用列表理解:

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

如果你想使用 - 中缀语法,你可以这样做:

 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

但是,如果您不是绝对需要列表属性(例如,排序),只需按照其他答案的建议使用集合即可。

原文由 aaronasterling 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用 集差

>>> z = list(set(x) - set(y))
>>> z
[0, 8, 2, 4, 6]

或者您可能只是设置了 x 和 y,这样您就不必进行任何转换。

原文由 quantumSoup 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏