我感到惊讶的是,abs在numpy数组上工作,而不在列表上工作。为什么会这样呢?
import numpy as np
abs(np.array((1,-2)))
array([1, 2])
abs([1,-1])
TypeError: bad operand type for abs(): 'list'此外,内置的函数(如sum )也适用于numpy数组。我想是因为numpy数组支持__getitem__?但是对于abs,如果它依赖于__getitem__,那么它也应该适用于list,但它不起作用。
发布于 2014-01-06 15:25:14
abs函数查找__abs__方法。
您也可以像numpy一样在类中实现__abs__方法,这样abs就可以与它们一起工作。
即
class A(object):
def __abs__(self):
return 8
>>> a= A()
>>> abs(a)
8
>>>https://stackoverflow.com/questions/20953127
复制相似问题