Skip to main content
 首页 » 编程设计

R 向量化函数的 Pythonic 替代品

2025年05月04日12cyq1162

我在 Python 中工作,但来自 R 背景 - 如果我想获取一个字符串数组 x = ['1', '2', '3']并获得相应的整数数组 [1, 2, 3],自然要做的事情就是运行类似 int(x) 的程序。当然,这种语法不起作用,因为我使用的是 Python,并且函数不会自动矢量化。似乎我可以使用 NumPy 来创建函数的矢量化版本,但这感觉就像是用很重的 R 口音说 Python。

循环遍历向量的内容

x2 = [] 
for y in x: 
    x2.append(int(y)) 

但看起来一点也不优雅——它是一个三行结构,我可以在 R 中用六个字符完成一些事情。当然有一种更紧凑的 Pythonic 方式来做到这一点?或者这是在对抗 Python 与 R 的各自优势和劣势?

请您参考如下方法:

您可以使用 map

>>> lst = ['1', '2', '3'] 
>>> map(int, lst) 
[1, 2, 3] 

或列表理解:

>>> [int(x) for x in lst] 
[1, 2, 3] 

使用哪一个?主要基于意见。就个人而言,如果映射的函数已经作为内置函数存在,我更喜欢 map。

请注意,在 Python3 中,map 将生成一个 map 对象,如果您想要一个列表,则必须显式转换为列表。所以在 Python3 中可能更喜欢理解:

>>> result = map(int, ['1', '2', '3']) 
>>> result 
<map object at 0x7f35c4c3af98> 
>>> list(result) 
[1, 2, 3]