2017-01-11 35 views
-1

我想编写一个程序来计算数组中所有值之间的差异,并查找差异是否也出现在数组还是不是。找到数组中所有值之间的差异,并检查数组中存在的差异

对于例如,

a = [1,2,4,5] 

for i in range(len(a)): 
    j = i+1 
    for j in range(len(a)): 
     dif = a[i] - a[j] 
     if dif in a: 
      print a[i], a[j], dif 

这里的输出是,

2 1 1 
4 2 2 
5 1 4 
5 4 1 

我想知道是否有这样做的更有效的方法?我不想在这里使用任何构建函数的python。没有这个可以改进算法?

任何帮助将是有益的 感谢

+1

'range'和'len'是什么我会打电话给“内置”功能。所以,你正在制造任意约束。 – rofls

+0

此外,代码不会提供您提供的输出。而'j = i + 1'不会做任何事情,因为你用下一行中的不同值覆盖了'j' – UnholySheep

回答

1

您可以使用itertools.combinations来实现这一目标:

from itertools import combinations 
a = [1,2,4,5] 

for i, j in combinations(a, 2): 
    dif = j - i # OR, dif = abs(j - i) for checking against absolute value 
    if dif in a: 
     print j, i, dif 

上面的代码将打印:

2 1 1 
5 1 4 
4 2 2 
5 4 1