我不知道为什么只有三分之二的值在我的代码中显示它们是相同的,是不是我遗漏了什么?
def occurInBoth(B,A):
occured = 0
for i in range(len(A)):
if A[i] == B[i]:
occured += 1
return occured
A = [5,12,31,7,25]
sorted(A)
A.sort()
print(A)
B = [4,12,7,31,42,8]
sorted(B)
B.sort()
print(B)
occured = occurInBoth(B,A)
print(occured)
你能给我点建议吗?
最佳答案
您的算法存在逻辑错误。如果对两个列表进行排序,这不意味着项目将出现在相同的索引处。
确实,以您的示例中的排序列表为例:
A = [5, 7, <b>12</b>, 25, 31]
B = [4, 7, 8, <b>12</b>, 31, 42]
如您所见,12
出现在两个列表中,但不在同一索引处。
然而,您可以利用列表已排序的事实:
def occurInBoth(a, b):
occured = i = j = 0
while i < len(a) and j < len(b):
if a[i] < b[j]:
i += 1
elif a[i] > b[j]:
j += 1
else:
occurred += 1
i += 1
j += 1
关于python - 对两个数组进行排序以查看它们是否具有相同的值,但它只会发现数组中有 2/3 的值相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58259761/