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
初始化为一个空列表,然后向其添加一个元素,因此 xgate
到 plot
被调用。但是 plot
尝试访问 xgate
的第 i 个元素,这将在第一次迭代中成功并在第二次迭代中失败(一次 i=1
)。
您应该能够通过将列表初始化 xgate = []
移到循环之外来解决这个问题,这样它实际上会累积元素。
(我不确定 xgate_y
和 xgate_z
的初始化也应该在循环中,但它们不会累积,不应导致此类问题。)
我正在尝试构建一个叫做 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
初始化为一个空列表,然后向其添加一个元素,因此 xgate
到 plot
被调用。但是 plot
尝试访问 xgate
的第 i 个元素,这将在第一次迭代中成功并在第二次迭代中失败(一次 i=1
)。
您应该能够通过将列表初始化 xgate = []
移到循环之外来解决这个问题,这样它实际上会累积元素。
(我不确定 xgate_y
和 xgate_z
的初始化也应该在循环中,但它们不会累积,不应导致此类问题。)