IndexError: list index out of range (Bloch sphere)

IndexError: list index out of range (Bloch sphere)

我正在尝试构建一个叫做 Bloch Sphere 的东西,它是单个量子位的 3-D 表示。目前,我正在创建一个沿 x 轴开发动画的函数,这是我编写的代码。

def x_animation(self):
    #Y and Z are inputs from users
    Y1 = self.Y*(-1)
    Z1 = self.Z*(-1)
    #number of dots which consists animation
    length = 10
    for i in range(length+1):
        # an array of X,Y,Z coordinates of 10 dots
        xgate= []
        xgate_y = np.linspace(self.Y,Y1,length+1)
        xgate_z = np.linspace(self.Z,Z1,length+1)
        xgate.append([self.X,round(xgate_y[i],1),round(xgate_z[i],1)])
        plot(xgate[i][0],xgate[i][1],xgate[i][2])

但是,我得到以下错误。

IndexError                                Traceback (most recent call last)
<ipython-input-5-f56aa4b3a487> in <module>()
----> 1 q.x_animation()

<ipython-input-3-f74dcce093d4> in x_animation(self)
 57             xgate_z = np.linspace(self.Z,Z1,length+1)
 58           xgate.append([self.X,round(xgate_y[i],1),round(xgate_z[i],1)])
---> 59             plot(xgate[i][0],xgate[i][1],xgate[i][2])
 60 
 61     def x_gate(self):

IndexError: list index out of range

如果有人能帮助我解决这个问题,我将不胜感激。

您的代码在每次迭代时将列表 xgate 初始化为一个空列表,然后向其添加一个元素,因此 xgateplot 被调用。但是 plot 尝试访问 xgate 的第 i 个元素,这将在第一次迭代中成功并在第二次迭代中失败(一次 i=1)。

您应该能够通过将列表初始化 xgate = [] 移到循环之外来解决这个问题,这样它实际上会累积元素。

(我不确定 xgate_yxgate_z 的初始化也应该在循环中,但它们不会累积,不应导致此类问题。)