Python:按元素计算相等元素的数量
我想计算两个列表(Python:按元素计算相等元素的数量,python,Python,我想计算两个列表(list1和list2)在同一索引中具有相同编号的次数 首先,有一种方法: def count_common(list1, list2): count = 0 for i, elem1 in enumerate(list1): if elem1 == list2[i]: count += 1 return count 这是O(n)时间和O(1)空间 如果我尝试更具python风格的方式,我会得到O(n)空间: 有
list1
和list2
)在同一索引中具有相同编号的次数
首先,有一种方法:
def count_common(list1, list2):
count = 0
for i, elem1 in enumerate(list1):
if elem1 == list2[i]:
count += 1
return count
这是O(n)时间和O(1)空间
如果我尝试更具python风格的方式,我会得到O(n)空间:
有没有一种Pythonic的方法来维护我的初始解决方案中使用的O(1)空间
谢谢 首先,您应该真正理解使用一行程序并不是Pythonic的同义词。也就是说,可以使用生成器表达式而不是列表表达式来使用常量空间:
sum(a == b for a, b in zip(list1, list2))
我实际上会使用上面的一个班轮。它可读性很强。但是,等效的for loop同样适用:
事实上,如果for-loop方法的性能更好,我也不会感到惊讶。生成器开销会给您带来很大损失。首先,您应该真正了解使用一行程序并不是Pythonic的同义词。也就是说,可以使用生成器表达式而不是列表表达式来使用常量空间:
sum(a == b for a, b in zip(list1, list2))
我实际上会使用上面的一个班轮。它可读性很强。但是,等效的for loop同样适用:
事实上,如果for-loop方法的性能更好,我也不会感到惊讶。你会因为发电机的开销而损失很多
total = 0
for a, b in zip(list1, list2):
total += a == b