我在 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]
