对于初学者来说,这不是一个简单的问题。一种更直接的方法是使用类似 和 的函数sum
,以及zip
像这样的列表理解:
def commons(L1, L2):
return sum(el1 == el2 * 1 for el1, el2 in zip(L1, L2))
初学者采用的更典型但容易出错的方法是:
def commons(L1, L2):
count = 0
for i, elem in enumerate(L2):
if elem == L1[i]:
count += 1
return count
我说这更容易出错,因为有更多的部分要正确。
不使用enumerate
你可以这样做:
def commons(L1, L2):
count = 0
for i, range(len(L2)):
if L1[i] == L2[i]:
count += 1
return count
但是前两个只有在len(L2) <= len(L1)
. 明白我所说的更容易出错的意思吗?要解决此问题,您需要执行以下操作:
def commons(L1, L2):
count = 0
for i, range(min(len(L2), len(L1))):
if L1[i] == L2[i]:
count += 1
return count