如何最小化列表,使 python 中的每个元素只有一个 - 在一行中?

How do I minimize a list so there will only be only one of each element in python - in one line?

我正在尝试编写一个函数,它将获取 2 个列表,找到它们之间的交点,然后 return 一个包含这些交点的新列表,新列表将不包含相同的元素不止一次。
例如:

intersection([1,2,3,4], [8,3,9])
[3]

我试过以下方法:

print(list(filter(lambda x: x in list2, list1)))

事情是这样的,例如:

intersection([1,2,3,3,4], [8,3,9])

结果为 [3,3]。

如何才能使同一行代码中只有一个 3?

谢谢!

尝试: 列表(设置(交点([1,2,3,3,4],[8,3,9])))

简单的方法是通过集合:

L = [1,2,3]
M = [4,2,2,3,3]

inter = list( set(L).intersection(M) )

为什么不使用 set 并将结果转换回列表如下:

l = [1, 2, 3, 3, 4]
l2 = [8, 3, 9]
list(set(l).intersection(set(l2)))

输出:

[3]

使用set.intesection:

def intersection(l1, l2):
    return list(set(l1).intersection(l2))

intersection([1,2,3,4], [8,3,9])
# [3]

如何获得 [3]

x = list(set(filter(lambda x: x in [1,2,3,3,4], [8,3,3,9])))
print(x)

输出:

[3]