我是python
的新手,对于计算数组中对某些数字的补充有疑问。
示例
给定一个整数数组A
,找到A
中所有互补对,总计提供的值K
,例如给定数组[2, 45, 7, 3, 5, 1,8,9]
和整数{{1结果必须为K = 10
,因为输入数组包含3
以下是寻找互补对的代码
[9, 1] [7, 3] [8, 2]
如何在最后添加count命令?
答案 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