2016-07-13 24 views

Antwort

6

Sie können reduce verwenden.

Funktion von zwei Argumenten kumulativ auf die Elemente der Sequenz anwenden, von links nach rechts, um die Sequenz auf einen einzelnen Wert zu reduzieren.

Der Code kann als

>>> from functools import reduce 
>>> l = [1,2,3,4,5,6] 
>>> reduce(lambda x,y:x/y,l) 
0.001388888888888889 

, die bereits durch die andere answer demonstriert worden, um

>>> 1/2/3/4/5/6 
0.001388888888888889 

Als truediv hat entspricht nachgewiesen werden, dann ist dies eine Alternative (die anderen Weg ist bevorzugt) für Python2

>>> from __future__ import division 
>>> l = [1,2,3,4,5,6] 
>>> reduce(lambda x,y:x/y,l) 
0.001388888888888889 
+0

besser mit 'operator.truediv' hier ... wenn die OPs auf 2.x, dann wird es noch richtiges Verhalten anstelle von Integer-Division .. –

+0

@JonClements bereits in einem anderen Beitrag beantwortet. :/ –

+0

Umm ... beide haben die Hälfte der "richtigen" Antwort :) –

6

Sie reduce() verwenden können und operator.truediv:

>>> a = [1,2,3,4,5,6] 
>>> from operator import truediv 
>>> 
>>> reduce(truediv, a) 
0.001388888888888889 

Hinweis: In python3.x müssen Sie aus functools Modul die reduce() Funktion importieren.

4

Warum nicht einfach eine Schleife verwenden?

>>> a = [1,2,3,4,5,6] 
>>> i = iter(a) 
>>> result = next(i) 
>>> for num in i: 
...  result /= num 
... 
>>> result 
0.001388888888888889 
>>> 1/2/3/4/5/6 
0.001388888888888889 
Verwandte Themen