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?
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.
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)
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?
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.
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)