2016-12-15 128 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系列具有許多功能,是許多數據處理和分析任務的理想選擇。

相關問題