使用下面的代码,我本希望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.])
(此外,float
和numpy.float64
值的乘积也是numpy.float64
值。(