Apply function to all items in a list

Question:

I am trying to apply a function to a list. The function takes a value and produces another.

For example:

myCoolFunction(75)

would produce a new value.

So far I am using this:

x = 0
newValues = []

for value in my_list:
    x = x + 1
    newValues.append(myCoolFunction(value))
    print(x)

I am working with around 125,000 values and the speed at which this is operating does not seem very efficient.

Is there a more pythonic way to apply the function to the values?

Asked By: Learning Developer

||

Answers:

You can use map approach:

list(map(myCoolFunction, my_list))

This applies defined function on each value of my_list and creates a map object (3.x). Calling a list() on it creates a new list.

Answered By: Austin

In case you are using pandas, here is how the pythonic mapping and list comprehension techniques mentioned above are done with pandas:

import pandas as pd

def myCoolFunction(i):
    return i+1

my_list = [1,2,3]
df = pd.DataFrame(index=my_list, data=my_list, columns=['newValue']).apply(myCoolFunction)

Answered By: Rich Andrews
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.