将函数应用于列表中的所有项

3

我正在尝试将一个函数应用于列表。该函数接受一个值并生成另一个值。

例如:

myCoolFunction(75)

会产生一个新的值。

到目前为止,我正在使用这个:

x = 0
newValues = []

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

我正在处理大约125,000个值,目前的操作速度似乎不太高效。

是否有更符合Python风格的方法来应用该函数到这些值上?


2
一个 列表推导式: new_values = [myCoolFunction(value) for value in my_list]。同时,变量名不需要使用驼峰命名法,这也不是 PEP8 的一部分。 - roganjosh
这个回答解决了你的问题吗?将函数应用于列表的每个元素 - mkrieger1
2个回答

9

你可以使用 map 方法:

list(map(myCoolFunction, my_list))

这将在my_list的每个值上应用定义的函数,并创建一个映射对象(3.x)。对其调用list()将创建一个新列表。

2

如果你正在使用pandas,以下是如何使用pythonic映射和列表推导技术的示例:

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)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接