python - 对两个数组进行排序以查看它们是否具有相同的值,但它只会发现数组中有 2/3 的值相同

标签 python arrays algorithm

我不知道为什么只有三分之二的值在我的代码中显示它们是相同的,是不是我遗漏了什么?

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/

相关文章:

python - 用 n 表示具有整数 A i,j := sin(z i, j) 的 nxn 数组,其中 zi, j 是 (0,2pi] 中均匀分布的随机数

python - 在没有 dtype 参数的情况下调用 np.array 会引发错误吗?

python Selenium - 无法获取 Facebook 表格内容

python - 云函数将 CSV 发送到云存储

javascript - 在 JavaScript 中调用列表中的内容

algorithm - 构建最优字典算法

python - 在序列化器中添加一个额外的字段,但它不在模型中

arrays - 从 JSON 解析数组内的字典获取数据

php - $_COOKIE 仅存储最后插入的值

Java:如何在反转分割字后将分隔符读回字符串?