基于函数的列表对称差集
在对两个列表的每个元素应用提供的函数后,返回它们的对称差集。
- 通过将
fn
应用于每个列表中的每个元素创建一个set
。 - 使用列表推导式和
fn
结合使用,只保留另一个列表的先前创建的集合中不包含的值。
def symmetric_difference_by(a, b, fn):
(_a, _b) = (set(map(fn, a)), set(map(fn, b)))
return [item for item in a if fn(item) not in _b] + [item
for item in b if fn(item) not in _a]
from math import floor
symmetric_difference_by([2.1, 1.2], [2.3, 3.4], floor) # [1.2, 3.4]