Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to divide all the elements in a list together

Tags:

python

list

For example:

a = [1,2,3,4,5,6]

I want to do:

1/2/3/4/5/6

I have tried using the operator.div function but it doesn't seem to give the correct result. By the way, I am fairly new to python.

like image 490
ban can Avatar asked Dec 04 '22 00:12

ban can


2 Answers

You can use reduce.

Apply function of two arguments cumulatively to the items of sequence, from left to right, so as to reduce the sequence to a single value.

The code can be demonstrated as

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

which is equivalent to

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

As truediv has already been demonstrated by the other answer, this is an alternative (the other way is preferred) for Python2

>>> from __future__ import division
>>> l = [1,2,3,4,5,6]
>>> reduce(lambda x,y:x/y,l)
0.001388888888888889
like image 196
Bhargav Rao Avatar answered Dec 06 '22 15:12

Bhargav Rao


You can use reduce() and operator.truediv:

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

Note: In python3.x you need to import the reduce() function from from functools module.

like image 40
Mazdak Avatar answered Dec 06 '22 14:12

Mazdak