IndexError: список индексов вне диапазона (сфера Блоха) - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать нечто, называемое Сферой Блоха, которое является трехмерным представлением одиночного квантового бита. В настоящее время я создаю функцию, которая развивает анимацию вдоль оси 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

Буду признателен, если кто-нибудь поможет мне с решением этой проблемы.

1 Ответ

0 голосов
/ 14 ноября 2018

Ваш код инициализирует список xgate пустым списком на каждой итерации, а затем добавляет к нему один элемент, таким образом, xgate никогда не имеет более одного элемента в момент вызова plot. Но plot пытается получить доступ к i-му элементу xgate, который завершится успешно на первой итерации и завершится неудачей на второй (один раз i=1).

Вы сможете исправить это, переместив инициализацию списка xgate = [] за пределы цикла, чтобы он фактически накапливал элементы.

(Я не уверен, что инициализация xgate_y и xgate_z также должна быть в цикле, но они не накапливаются и не должны вызывать такого рода проблемы.)

...