计算数组

时间:2016-04-03 10:37:37

标签: python arrays count

我是python的新手,对于计算数组中对某些数字的补充有疑问。

示例
给定一个整数数组A,找到A中所有互补对,总计提供的值K,例如给定数组[2, 45, 7, 3, 5, 1,8,9]和整数{{1结果必须为K = 10,因为输入数组包含3

以下是寻找互补对的代码

[9, 1] [7, 3] [8, 2]

如何在最后添加count命令?

2 个答案:

答案 0 :(得分:2)

使用简单的计数器变量

def find_pairs(list_, sum_):
    s = set(list_)
    pairs = 0

    for i in list_:
        diff = sum_ - i
        s.remove(i)

        if diff in s:
            pairs += 1

    return pairs

如果您还想知道对

,也可以使用帮助列表来存储对
def find_pairs(list_, sum_):
    s = set(list_)
    pairs = []

    for i in list_:
        diff = sum_ - i
        s.remove(i)

        if diff in s:
            pairs.append([i, diff])

    return pairs

L = [2, 45, 7, 3, 5, 1, 8, 9]
pairs = find_pairs(L, 10)
print pairs
>>> [[2, 8], [7, 3], [1, 9]]
print len(pairs)
>>> 3

答案 1 :(得分:0)

使用numpy:

A = np.asarray(A)
np.count_nonzero((A[None, :] + A[:, None]) == K) // 2