2016-08-08 32 views
0
gegeben

Ich versuche, in Python reduzieren und 0 bekommen, wenn andere Werte erwartet:Python 3 functools.reduce gibt 0, wenn nicht wörtlich Liste

In [1]: from functools import reduce 

In [2]: reduce((lambda x, y: x * y), [1, 2, 3, 4]) 
Out[2]: 24 

In [3]: def multiply(x, y): return x * y 

In [4]: reduce(multiply, [1, 2, 3, 4]) 
Out[4]: 24 

In [5]: reduce(multiply, range(5)) 
Out[5]: 0 

In [6]: reduce(multiply, list(range(5))) 
Out[6]: 0 

[...]  

In [11]: L = list(range(5)) 

In [12]: L 
Out[12]: [0, 1, 2, 3, 4] 

In [13]: reduce(multiply, L) 
Out[13]: 0 

Warum ich bin immer 0, wenn nicht eine wörtliche Liste eingeben? Wie kann ich willkürliche Listen reduzieren? Was vermisse ich?

+0

Heman's Antwort ist korrekt, verwenden Sie 'Bereich (1, 5)'. –

Antwort

0

Pythons range beginnt mit 0, nicht 1. 0 mal etwas verursacht die 0 du bekommst immer ...

+1

Ich bin in einem Ozean der Schande. – Idaho06