如何以另一个数组的形式打印一个数组的2个元素之间的差异

问题描述 投票:0回答:3

作为示例,我有一个包含 5 个元素的数组:

输入数组:

ele = [2, 5, 9, 1, 4]

我想输出一个所有元素之间存在差异但不重复差异的数组(即,我不想计算 ele[1] - ele[5],然后再次计算 ele[5] - ele[1])

我的输出数组应该是

diff_array = [ele[1]-ele[2], ele[1]-ele[3], ele[1]-ele[4], ele[1]-ele[5], ele[2]- ele[3]、ele[2]-ele[4]、ele[2]-ele[5]、ele[3]-ele[4]、ele[3]-ele[5]、ele[4]-电子[5]]

diff_array = [-3, -7, 1, -2, -4, 4, 1, 8, 5, -3]

我想用Python写这个。我想我必须制作嵌套 for 循环,但我没有做对。这是我的完整代码的一小部分。任何帮助将不胜感激。一直在尝试各种东西,但没有给我正确的答案。

非常感谢!

python arrays for-loop nested-loops
3个回答
1
投票

您可以使用嵌套的 for 循环:

ele = [2, 5, 9, 1, 4]

for x in range(len(ele)):
    for y in range(x+1,len(ele)):
        print(ele[x]-ele[y])

使用列表理解:

[ele[x]-ele[y] for x in range(len(ele)) for y in range(x+1,len(ele))]

#output
[-3, -7, 1, -2, -4, 4, 1, 8, 5, -3]

或者像 @Jon 建议的 itertools 一样:

import itertools    
print([x[0] - x[1] for x in itertools.combinations(ele, 2)])

0
投票
def diff(arr):
    n = len(arr)
    r = []
    for i in range(n):
        for j in range(i+1,n):
            r.append(arr[i]-arr[j])
    return r
 arr = [2, 5, 9, 1, 4]

 new_arr = diff(arr)

 print(new_arr)

0
投票

ele = [2, 5, 9, 1, 4]

初始化一个空列表来存储差异

diff_array = []

迭代所有元素对

对于范围内的 i(len(ele)):

for j in range(i + 1, len(ele)):
    # Calculate the difference and append it to the list
    diff = ele[i] - ele[j]
    diff_array.append(diff)

打印结果

打印(diff_array)

© www.soinside.com 2019 - 2024. All rights reserved.