如何在 Python 中使用列表理解创建交错嵌套循环
How to make a staggered nested loop using list comprehensions in Python
我有一个数组。
我想输出一个数组数组,其中每个内部数组包含的值表示每个元素与其后的元素之间的数值距离。
所以换句话说,我想把 [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]]
怎么样
[[abs(y-x) for y in thearray[idx+1:]] for idx, x in enumerate(thearray)]
我有一个数组。
我想输出一个数组数组,其中每个内部数组包含的值表示每个元素与其后的元素之间的数值距离。
所以换句话说,我想把 [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]]
怎么样
[[abs(y-x) for y in thearray[idx+1:]] for idx, x in enumerate(thearray)]