问题
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?
回答1:
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.
回答2:
This question is heavily tagged with Pandas
related things. And so 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)
来源:https://stackoverflow.com/questions/55549585/apply-function-to-all-items-in-a-list-python