我有一个数组。
我想输出一个数组数组,其中每个内部数组包含的值代表每个元素之后元素的数值距离。
所以换句话说,我想把[1,2,3]变成[[1, 2], [1], []]
。如果我在Javascript中这样做,那就是
var results = [];
for (var i = 0; i < thearray.length; i++){
var innerArray = [];
for (var j = i; j < thearray.length; j++){
innerArray.push(Math.abs(thearray[j] - thearray[i]));
}
results.push(innerArray);
}
但是,我正在尝试使用Python中的列表推导,我认为这很简单,但它并没有像我期望的那样工作。
thearray = [1, 6, 8, 2]
[[abs(j-i) for j in thearray[i:]] for i in thearray]
# Result: [[5, 7, 1], [], [], [6, 0]]
# Expecting [[5, 7, 1], [2, 4], [6], [0]]
答案 0 :(得分:1)
怎么样
[[abs(y-x) for y in thearray[idx+1:]] for idx, x in enumerate(thearray)]