2016-08-08 8 views
0

주어진다면 0 제공 :파이썬 3 functools.reduce하지 문자 목록은 파이썬에서 감소 노력과 다른 값을 예상 할 때 0을 얻고있다

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 

리터럴 목록을 입력하지 않을 경우 이유는 0는 무엇입니까? 임의리스트를 어떻게 줄일 수 있습니까? 내가 뭘 놓치고 있니?

+0

Heman의 대답이 정확합니다. 'range (1, 5)'를 사용하십시오. –

답변

0

파이썬의 range0으로 시작하며 1이 아닙니다. 0 번 걸리면 무엇이든 0을 얻게됩니다 ...

+1

나는 부끄러운 바다에있다. – Idaho06