对比Python中的两个排序列表
我有两个排序的列表,我需要在每个列表中找出奇怪的列表。
目前我正在使用两个列表推导式not in:
> if foo != bar:
in_foo = [i for i in foo if i not in bar]
in_bar = [i for i in bar if i not in foo]
但是,此方法没有利用列表的排序结构。
我可以使用带有计数器变量和递归的替代方法,但是有没有更 Pythonic 的方法来做到这一点?
编辑:排序输出是首选。谢谢。
回答
任何时候遇到这样的事情时,通常最好使用集合并忽略排序(由于语言开销,这在 Python 中对于小列表的重要性远低于其他编程语言)
_foo = set(foo)
_bar = set(bar)
in_foo = _foo - _bar
in_bar = _bar - _foo
- @SrikrishnaSharma How so? `set`s are unordered.