为什么这不会引发不受支持的操作数错误?

  • 本文关键字:支持 操作数 错误 python
  • 更新时间 :
  • 英文 :


使用下面的代码,我本希望X.extend行抛出不支持的操作数错误(TypeError:不支持+的操作数类型:'float'和'list'(,因为试图将浮点添加到列表中。但它运行并给出与Y.extend相同的答案,其中整个表达式被括在一个列表中。我使用的是Python 3.10。现在,如果将X.extend中的np.cos(fwd_angle(项替换为其实际值(0.5(,那么python将抛出预期的错误。为什么初始代码可以在不引发错误的情况下工作?

import numpy as np
X = [1., 2., 3.]
Y = [1., 2., 3.]
fwd_angle = 60.*np.pi/180.
for i in range(3):
X.extend( X[i + 1] * np.cos(fwd_angle) + [X[i] + np.sin(fwd_angle)] )
Y.extend( [Y[i + 1] * np.cos(fwd_angle) + Y[i] + np.sin(fwd_angle)] )
print(X)
print(Y)

np.cos不返回float值;则返回CCD_ 3值。这些可以添加到列表中,结果是numpy.ndarray值。

numpy.float64.__add__的工作原理是将调用对象添加到任意可迭代的的每个元素中

# [-1 + 1, -1 + 2, -1 + 3]
>>> np.cos(np.pi) + [1,2,3]
array([0., 1., 2.])

(此外,floatnumpy.float64值的乘积也是numpy.float64值。(

最新更新