两个列表之间没有重复的公共元素

查理米勒

问题是这样的,拿两个列表,比如说这两个:

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]

并编写一个程序,该程序返回一个列表,该列表仅包含列表之间的公共元素(没有重复项)。确保您的程序适用于两个不同大小的列表。

这是我的代码:

a = [1, 1, 2, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
c = []
for i in a:
    if i in b and i not in c:
        c.append([i])
print(c)

尽管有“i not in c”语句,但我的输出仍然给我重复。为什么是这样?我敢肯定它很明显,我只是看不到它!

深空
  1. 您正在附加一个包含ito的列表c,因此i not in c始终返回True您应该i自己附加c.append(i)

或者

  1. 只需使用集合(如果顺序不重要):

    a = [1, 1, 2, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    b = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
    c = set(a) & set(b)  #  & calculates the intersection.
    print(c)
    #  {1, 2, 3, 5, 8, 13}
    

编辑为@Ev。Kounis 在评论中建议,使用
c = set(a).intersection(b).

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章