两个名单之间的入门比较?

时间:2014-04-27 19:19:37

标签: python

我有两个相同长度的列表。我想进入它们,并计算有多少是相等的。

>>> 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

是否可以使用列表推导来比较相应的条目?谢谢!

1 个答案:

答案 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