2012-03-28 9 views
4

Ich habe ein Programm, das Bericht und Inventar anzeigt, und ich fragte mich gerade, wie ich das folgende in ein Listenverständnis statt einer for-Schleife setzen könnte ... Ich bin irgendwie ein noob in all diesen Jargon python aber von i wissen, was das alles ist, das in Form einer for-Schleife ist, kann auch als Liste Verständnis ausdrücken .... Jede Hilfe wäreVon einer for-Schleife zu einem Listenverständnis

def rowSum(TotSize,data,row,col): 
    """Calculates the sum of each row in a given 2 dimensional list and stores 
it into a given one dimensional list""" 
    for i in range(row): 
     sum = 0 
     for j in range(col): 
      sum += data[i][j] 
     TotSize[i] = sum 
+0

Wollen Sie wirklich ein Listenverständnis? Das sieht für mich nach einem Auftrag für "map" und "sum" aus (obwohl 'map' und Listencomprehensions wirklich nur verschiedene Arten sind, dieselbe Idee auszudrücken). –

+0

"alles, was in Form einer For-Schleife ist, kann auch als Listenverständnis ausgedrückt werden" - Das ist nicht wirklich wahr. Jede Liste, deren Elemente ** explizit ** durch eine Funktion einer anderen Liste definiert werden können, kann als Listenverständnis geschrieben werden: 'newList = [f (x) für x in anderer Liste]'. Dies entspricht in vielen Sprachen map: 'newList = otherList.map (f)'. Einige Listen können auf diese Weise nicht einfach dargestellt werden, wie z. B. 1D-Zellular-Automaten, 2D-dynamische Programmiertabellen oder Funktionen mit Nebeneffekten (wie die "Summe" in Ihrer rowSum). (Sie würden Summen schreiben wie Sie, oder verwenden Sie 'reduce') – ninjagecko

Antwort

Verwandte Themen