Cha*_*ler 0 python list duplicates python-3.x
问题是这样,拿两个清单,例如说这两个:
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]
Run Code Online (Sandbox Code Playgroud)
并编写一个程序,该程序返回一个列表,该列表仅包含列表之间的公共元素(无重复项)。确保您的程序可以在两个不同大小的列表上运行。
这是我的代码:
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)
Run Code Online (Sandbox Code Playgroud)
尽管'i not in c'语句,我的输出仍然给我重复的内容。为什么是这样?我敢肯定它很明显,我只是看不到它!
i来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}
Run Code Online (Sandbox Code Playgroud)编辑为@Ev。Kounis在评论中建议,您可以使用提高速度
c = set(a).intersection(b)。