【发布时间】:2011-06-14 02:02:08
【问题描述】:
a = [1, 2, 9, 5, 1]
b = [9, 8, 7, 6, 5]
我想计算两个列表之间的重复次数。因此,使用上述方法,我想返回 2 的计数,因为 9 和 5 对两个列表都是通用的。
我尝试了类似的方法,但效果不佳。
def filter_(x, y):
count = 0
for num in y:
if num in x:
count += 1
return count
【问题讨论】:
-
请注意,一旦它起作用(将
return删除两次),它就会具有O(n * m)复杂性,即扩展得非常可怕。 -
@delnan 感谢您的提示。所以使用交叉点可以更好地扩展。
-
是的。您实际上可以做得更好,但这需要不止一行代码(想法是您只需要一组第一个列表,然后迭代第二个并保留集合中的项目 - 节省创建第二个设置)。
-
a包含两次1,如果b还包含1,那么计数应该增加1还是2?