2016-07-21 21 views
0

Ich habe ein Array.Wie man eine gestaffelte verschachtelte Schleife mit List Comprehensions in Python macht

Ich möchte ein Array von Arrays ausgeben, wobei jedes innere Array Werte enthält, die den numerischen Abstand jedes Elements zu den Elementen danach darstellen.

Also in besseren Worten, ich möchte [1, 2, 3] in [[1, 2], [1], []] verwandeln. Wenn ich in Javascript tun dies war, wäre es

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); 
} 

jedoch sein, ich versuche, dies mit Listenkomprehensionen in Python, die ich dachte, wäre einfach, aber es funktioniert nicht, wie ich erwarten würde.

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

Swap die "für die Variable in" Aufträge. –

Antwort

1

Wie wäre es

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

Schön ... Ich habe etwas Ähnliches gefunden, aber nicht ganz so schön (ich vergesse, aufzuzählen - in meiner Arbeit brauche ich nicht viel davon). Beachten Sie, dass das letzte Element leer ist, nicht [0], was meiner Meinung nach erwartet werden sollte. – Fhaab