问题是这样的,拿两个列表,比如说这两个:
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”语句,但我的输出仍然给我重复。为什么是这样?我敢肯定它很明显,我只是看不到它!
i
to的列表c
,因此i not in c
将始终返回True
。您应该i
自己附加:c.append(i)
或者
只需使用集合(如果顺序不重要):
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] 删除。
我来说两句