作为示例,我有一个包含 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 循环,但我没有做对。这是我的完整代码的一小部分。任何帮助将不胜感激。一直在尝试各种东西,但没有给我正确的答案。
非常感谢!
您可以使用嵌套的 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)])
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)
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)