如何在python中将函数应用于列表的每个子列表?
可以说我有一个这样的列表:
list_of_lists = [['how to apply'],['a function'],['to each list?']]
我有一个函数,假设我想将该F
函数应用于该函数的每个子列表,F
可以计算出有关两个列表的一些分数。如何将此F
功能应用于的每个列表list_of_lists
并在新列表中返回每个分数,如下所示:
new_list = [score_1, score_2, score_3]
我尝试使用以下map
功能:
map(F, list_of_lists).append(new_list)
-
您可以使用内置函数
map
来执行此操作。因此,如果您要应用的函数是
len
,则可以执行以下操作:>>> list_of_lists = [['how to apply'],['a function'],['to each list?']] >>> map(len, list_of_lists) [1, 1, 1]
在中
Python3
,上面返回了一个地图迭代器,因此您需要一个显式list
调用:>>> map(len, list_of_lists) <map object at 0x7f1faf5da208> >>> list(map(len, list_of_lists)) [1, 1, 1]
如果您要为此编写一些必须在Python2和Python3中都兼容的代码,则列表推导方法是可行的。就像是:
[apply_function(item) for item in list_of_lists]
无需任何更改即可在Python 2和3中使用。
但是,如果您输入的list_of_lists很大,则
map
在Python3中使用将更有意义,因为迭代器会更快。