仅包含 2 个输入列表之间共有的元素的列表(没有重复项我做不到)

从两个列表中,返回一个列表,该列表仅包含 2 个输入列表之间共有的元素。无重复。

输入:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

我的解决方案:

common_list = [i for i in a if i in b]

我的输出:

[1, 1, 2, 3, 5, 8, 13]

我需要的输出:

[1, 2, 3, 5, 8, 13]


梵蒂冈之花
浏览 144回答 3
3回答

HUH函数

您可以使用设置操作In [13]: a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]    ...: b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]In [14]: list(set(a) & set(b))Out[14]: [1, 2, 3, 5, 8, 13]您的代码的问题是输出中的重复元素。您可以通过在输出上应用 set 运算符来避免这种情况common_list = list(set(i for i in a if i in b))

叮当猫咪

您还可以这样做:a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]set(a).intersection(b)set(a) & set(b)我觉得这比因为对我来说感觉有点太“神奇”而更具可读性。

MM们

您可以使用设置交集:a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]out = list(set(a).intersection(set(b)))print(out)输出:[1, 2, 3, 5, 8, 13]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python