【发布时间】:2020-05-29 12:14:16
【问题描述】:
为什么内置函数 abs() 不适用于 Python 列表,但可以正常使用 NumPy 数组和 pandas 系列?
将内置 abs() 函数应用于 Python 列表会引发异常
TypeError: abs() 的操作数类型错误:'list'
不出所料,与文档一致:
abs(x)
返回一个数字的绝对值。参数可以是整数或浮点数。 如果参数是复数,则返回其大小。
但是对于 NumPy 数组和 pandas 系列,相同的函数行为正确(作为矢量化函数):
In[2]: lst = [2, 0, -1]
In[3]: # abs(lst) # bad operand type for abs(): 'list'
In[4]: import numpy as np
In[5]: arr = np.array(lst)
In[6]: abs(arr) # no problem
Out[6]: array([2, 0, 1])
In[7]: import pandas as pd
In[8]: s = pd.Series(lst)
In[9]: abs(s) # no problem
Out[9]:
0 2
1 0
2 1
dtype: int64
In[10]: abs.__class__
Out[10]: builtin_function_or_method
这怎么可能?
【问题讨论】: