2016-12-15 69 views
5

我想将一个函数(len)应用于向量中的每个元素。在R我可以用sapply(cities,char)轻松做到这一点。在没有写入循环的情况下,Python中是否有这样的替代方案?Python vs. R:将一个函数应用于向量中的每个元素

+0

https://docs.python.org/3/library/functions.html#map – jakevdp

+1

什么列表理解? '[len(el)for el in vector]'。它比'地图'更具Pythonic。 –

+2

但是'sapply'是一个循环! – Parfait

回答

4

语法是map(function, list)

实施例:

map(len, [ [ 1,2,3], [4,5,6] ]) 

输出:

[ 3, 3 ] 
0

可以使用功能图谱,其接收应用到可迭代的函数。文档映射图:

>>> map(lambda x: x[1]*2 + 3, [[1,2,3], [1,4]]) 
[7, 11] 
2

将R sapply()可以与被替换:here

例如,罐传递一个anonymus功能(使用lambda)通过这种方式来应用到每个元件到列表列表理解,但足够公平的列表理解并不严格避免编写循环

除了map()你应该看看Pandas,它提供了Python的替代几个人在R.使用功能

import pandas as pd 

vector = [1,2,3,4,5] 
square_vector = pd.Series(vector).apply(lambda x: x**2) 
print square_vector.tolist() 

上面的代码结果与平方值一个新的列表在称输入的:

[1, 4, 9, 16, 25] 

在这里,我通过了向量的一系列构造pd.Series(vector)并应用anonymus功能apply(lambda x: x**2)。输出是熊猫系列,如果需要,可以将其转换回列表tolist()。 Pandas系列具有许多功能,是许多数据处理和分析任务的理想选择。

相关问题