我有两个相同长度的列表。我想进入它们,并计算有多少是相等的。
>>> lst1 = (1, -1, 0, 0, -1, 1, 1)
>>> lst2 = (0, 1, 1, 0, -1, -1, 1)
>>> for i in range(0,len(lst1)):
... lst1[i]==lst2[i]
...
False
False
False
True
True
False
True
>>> for i in range(0,len(lst1)):
... if lst1[i]==lst2[i]:
... ct = ct+1
...
>>> ct
3
我想知道是否有可能更有效地实施它?
以下不起作用,我不确定它是如何比较的:
>>> lst1==lst2
False
是否可以使用列表推导来比较相应的条目?谢谢!
答案 0 :(得分:1)
邮政编码需要更长时间:
import timeit
lst1 = [1, -1, 0, 0, -1, 1, 1]
lst2 = [0, 1, 1, 0, -1, -1, 1]
def f1(lst1, lst2):
ct = 0
for i in range(len(lst1)):
if lst1[i]==lst2[i]:
ct += 1
return ct
def f1_test():
f1(lst1, lst2)
print(timeit.timeit('f1_test()', setup="from __main__ import f1_test"))
2.560514380413868
def f2(lst1, lst2):
return sum(x==y for x, y in zip(lst1, lst2))
def f2_test():
f2(lst1, lst2)
print(timeit.timeit('f2_test()', setup="from __main__ import f2_test"))
2.8660979345097215