问题是这样的,取两个列表,比如说这两个:
Problem is this, take two lists, say for example these two:
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]
并编写一个程序,该程序返回一个列表,该列表仅包含列表之间共有的元素(没有重复).确保您的程序适用于两个不同大小的列表.
And write a program that returns a list that contains only the elements that are common between the lists (without duplicates). Make sure your program works on two lists of different sizes.
这是我的代码:
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"语句,但我的输出仍然给我重复.为什么是这样?我敢肯定它很明显,我只是看不到它!
My output is still giving me duplicates despite the 'i not in c' statement. why is this? I'm sure its blatantly obvious, I just cant see it!
i 的列表附加到 c,因此 i not in c 将始终返回 <代码>正确代码>.您应该单独附加 i:c.append(i)i to c, so i not in c will always return True. You should append i on its own: c.append(i)或者
只需使用集合(如果顺序不重要):
Simply use sets (if order is not important):
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).
EDIT As @Ev. Kounis suggested in the comment, you will gain some speed by using
c = set(a).intersection(b).
这篇关于两个列表之间没有重复的公共元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
如何在python中的感兴趣区域周围绘制一个矩形How to draw a rectangle around a region of interest in python(如何在python中的感兴趣区域周围绘制一个矩形)
如何使用 OpenCV 检测和跟踪人员?How can I detect and track people using OpenCV?(如何使用 OpenCV 检测和跟踪人员?)
如何在图像的多个矩形边界框中应用阈值?How to apply threshold within multiple rectangular bounding boxes in an image?(如何在图像的多个矩形边界框中应用阈值?)
如何下载 Coco Dataset 的特定部分?How can I download a specific part of Coco Dataset?(如何下载 Coco Dataset 的特定部分?)
根据文本方向检测图像方向角度Detect image orientation angle based on text direction(根据文本方向检测图像方向角度)
使用 Opencv 检测图像中矩形的中心和角度Detect centre and angle of rectangles in an image using Opencv(使用 Opencv 检测图像中矩形的中心和角度)