在函数中调用后列表不变

时间:2018-06-06 15:53:15

标签: python python-3.x

我正在进行一项Python练习,其中我将逆时针旋转一个2d向量的θ度。这是我写的函数

import math
def rotate(coordinate,theta):
    theta=math.radians(theta)
    x=coordinate[0]
    y=coordinate[1]
    coordinate[0]=x*math.cos(theta)-y*math.sin(theta)
    coordinate[1]=x*math.sin(theta)+y*math.cos(theta)

    return coordinate

其中coordinate是包含向量的x和y值的列表。

然而,当我尝试以下列方式调用此函数时,发生了一些奇怪的事情。

 points=[]   
 test=[1,0]   # a test vector

 #rotate the test vector 360 times
 for j in range(360):
   #print(rotate(test,j))
   points.append(rotate(test,j))

 #print the content of the vectors after rotation
 for item in points:
     print(item)

在上面的代码中,我有一个测试向量[1,0],我想将它旋转360次,旋转的矢量将添加到列表“点”。但是,如果我打印列表“点”的内容,我得到了

[1.0000000000000002, -4.098804629038e-14]
[1.0000000000000002, -4.098804629038e-14]
[1.0000000000000002, -4.098804629038e-14]
[1.0000000000000002, -4.098804629038e-14]
[1.0000000000000002, -4.098804629038e-14]
[1.0000000000000002, -4.098804629038e-14]
[1.0000000000000002, -4.098804629038e-14]
[1.0000000000000002, -4.098804629038e-14]
 ...

表明载体根本没有旋转!

我知道这个错误可以通过多种方式修复,但我仍然不太明白为什么会这样。任何人都可以给出一些解释吗?谢谢。

0 个答案:

没有答案