Algorithm 查找列表元素的所有可能差异

Algorithm 查找列表元素的所有可能差异,algorithm,diff,Algorithm,Diff,我试图找出一个列表中元素之间所有可能的差异 例如: x=[1,4,10,17,20,35]. 我想要一个数组作为答案: y=[3, 9, 16, 19, 34, 3, 6, 13, 16, 31, 9, 6, 7, 10, 25, 16, 13, 10, 3, 18, 19, 16, 10, 3, 15, 34, 31, 25, 18, 15] 对应于 [1-4, 1-10, 1-17, 1-20, 1-35, 4-1, 4-10, 4-17, ....] 我试着用diff来做,但我只得到

我试图找出一个列表中元素之间所有可能的差异

例如:

x=[1,4,10,17,20,35].
我想要一个数组作为答案:

y=[3, 9, 16, 19, 34, 3, 6, 13, 16, 31, 9, 6, 7, 10, 25, 16, 13, 10, 3, 18, 19, 16, 10, 3, 15, 34, 31, 25, 18, 15]
对应于

[1-4, 1-10, 1-17, 1-20, 1-35, 4-1, 4-10, 4-17, ....]
我试着用diff来做,但我只得到两个连续数字的差。我真的不知道如何在循环中计算它


你能帮忙吗

用Java编写,就这么简单:

List<Integer> diff = new ArrayList<Integer>();
for(int i=0; i<list.size(); i++) {
    for(int j=0; j<list.size(); j++) {
        if(i != j)
            diff.add(Math.abs(list.get(i) - list.get(j)));
    }
}
List diff=new ArrayList();

for(inti=0;i用python编写的解决方案

elements = [1,4,10,17,20,35]
differences = []
for i , element in enumerate(elements):
    for j, element2 in enumerate(elements):
        if i != j:
            differences.append( abs(element - element2) )
Python 1-liner:

>>> [abs(a - b) for i,a in enumerate(x) for j,b in enumerate(x) if i != j]
[3, 9, 16, 19, 34, 3, 6, 13, 16, 31, 9, 6, 7, 10, 25, 16, 13, 7, 3, 18, 19, 16, 10, 3, 15, 34, 31, 25, 18, 15]

您需要2个循环:i=0->n-2和j=i+1->n-1。但是,我们不是来为您编写代码的,因为您还没有指定语言,所以我们无论如何也不能。在Python中,一个简单的列表理解将在一行代码中实现。OP似乎不需要对角线上的零。您没有检查您是否使用相同的数字/i进行操作无损检测