JShoe
JShoe

Reputation: 3428

Doing math to a list in python

How do I, say, take [111, 222, 333] and multiply it by 3 to get [333, 666, 999]?


See also: How can I collect the results of a repeated calculation in a list, dictionary etc. (or make a copy of a list with each element modified)? . However, some techniques - especially ones involving Numpy - are specific to "doing math".

Upvotes: 31

Views: 117934

Answers (5)

krish
krish

Reputation: 11

Here is a handy set of functions (from me) to perform several basic operations on lists. It uses the 'Listoper' class from the listfun module that can be installed through pip. The appropriate function for your case would be: "listscale(a,b): Returns list of the product of scalar "a" with list "b" if "a" is scalar, or other way around" Code:

!pip install listfun
from listfun import Listoper as lst
x=lst.listscale(3,[111,222,333])
print(x)

Output:

[333, 666, 999]

Of course if it is just a one time operation you could just do a list comprehension as suggested by others, but if you need to perform several list operations, then the listfun might help.

Hope this helps

Link to the PypI: https://pypi.org/project/listfun/1.0/ Documentation with example code can be found in the Readme file at: https://github.com/kgraghav/Listfun

Upvotes: 1

Gareth Rees
Gareth Rees

Reputation: 65854

If you're going to be doing lots of array operations, then you will probably find it useful to install Numpy. Then you can use ordinary arithmetic operations element-wise on arrays, and there are lots of useful functions for computing with arrays.

>>> import numpy
>>> a = numpy.array([111,222,333])
>>> a * 3
array([333, 666, 999])
>>> a + 7
array([118, 229, 340])
>>> numpy.dot(a, a)
172494
>>> numpy.mean(a), numpy.std(a)
(222.0, 90.631120482977593)

Upvotes: 25

fahrenheit317
fahrenheit317

Reputation: 21

An alternative with the use of a map:

def multiply(a):
   return a * 3

s = list(map(multiply,[111,222,333]))

Upvotes: 1

bergercookie
bergercookie

Reputation: 2760

As an alternative you can use the map command as in the following:

map(lambda x: 3*x, [111, 222, 333])

Pretty handy if you have a more complex function to apply to a sequence.

Upvotes: 4

user126284
user126284

Reputation:

[3*x for x in [111, 222, 333]]

Upvotes: 41

Related Questions