如何使用Python中的列表推导来创建交错的嵌套循环

时间:2016-07-21 22:32:46

标签: python arrays list-comprehension nested-loops

我有一个数组。

我想输出一个数组数组,其中每个内部数组包含的值代表每个元素之后元素的数值距离。

所以换句话说,我想把[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]]

1 个答案:

答案 0 :(得分:1)

怎么样

[[abs(y-x) for y in thearray[idx+1:]] for idx, x in enumerate(thearray)]