2016-04-09 12 views
0

Ich habe eine Lambda-Funktion und eine 2D-Liste. Es muss mit reduce() getan werden. Lassen Sie uns sagen:Python - Funktion sollte eine 2D-Liste zurückgeben

func=lambda x,y:x+y 
input=[[2,3],[4,5]] 
# OUTPUT should be [[5],[9]] 

Alles, was ich habe ist:

arr=[] 
arr.append(reduce (lambda x,y:x+y,[i for i in input[0]])) 
arr.append(reduce (lambda x,y:x+y,[i for i in input[1]])) 
return arr 
# OUTPUT here is [5,9] 

Gibt es eine bessere Lösung?

+0

'[i für i in was auch immer]' ist nur eine Kopie von 'whatever'. – chepner

+0

Sind die Unterlisten in 'input' garantiert, nur zwei Elemente zu haben, oder kann jede eine beliebige Länge haben, zum Beispiel, [[1,2,3], [4,5,6, 7], [8, 9]] '? – chepner

Antwort

0

Umgeben Sie einfach den Anruf an reduce mit [...].

Beispiel: arr.append([reduce(lambda x,y: x+y,input[0]]))

Auch gibt es keine Notwendigkeit, ein Verständnis im Aufruf von reduce zu verwenden, wie ich im obigen Beispiel gezeigt habe.

schließlich als @Roman Kh darauf hingewiesen, kann dies alles in ein Statement komprimiert werden: arr = [reduce(lambda x,y: x+y, item) for item in input]

1
[reduce(lambda x,y:x+y, item) for item in input] 
Verwandte Themen