首页 > 解决方案 > 在python中获取给定数字列表中的一对数字的函数

问题描述

我正在编写一个函数,该函数试图返回一个整数,该整数表示给定列表中匹配的数字对的数量。下面是代码。

def testfunc(n, ar):
    count = []
    ar.sort()
    print(ar)
    if len(ar) == n:
        for i in range(len(ar)):
            for j in range(i+1, len(ar)):
                if ar[i] == ar[j]:
                    count.append(1)
                    if ar[i+1] == ar[j+1]:
                        count.append(1)
                        break
    return len(count)

它在输入如下所示时有效,测试用例 1,但在测试用例 2 时失败。

测试用例1:

n = 9
ar = [10, 20, 20, 10, 10, 30, 50, 10, 20]

测试用例 2:

n = 10
ar = [1, 1, 3, 1, 2, 1, 3, 3, 3, 3]

请指教我在做什么错误。

标签: python-3.xfunctionloopssorting

解决方案


你在数组长度上

如果 arg[i+1] == arg[j+1]:
试试这个,它应该适用于这两种情况。

def testfunc(ar):
    ar.sort();
    count = i = 0
    while i + count < len(ar) - 1:
        if ar[count + i] == ar[count + i + 1]:
            count += 1
        i += 1
    return count

推荐阅读