Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 类的方法中的索引超出范围_Python_Python 3.x - Fatal编程技术网

Python 类的方法中的索引超出范围

Python 类的方法中的索引超出范围,python,python-3.x,Python,Python 3.x,我在使用Python,我在一段代码中遇到了一个问题,其中包括设置一些运算符,你可以看到下面的代码,我在类的一个方法中遇到了一个问题,正如你在代码中看到的那样,qrelay,我在这一部分中得到了一个错误,对于范围(0,n-1)内的i:op=self.trans(op,self.bh[i],self.ah[i+1],self.bph[i],self.aph[i+1],B) op=self.trans(op,self.bv[i],self.av[i+1],self.bpv[i],self.apv[i+

我在使用Python,我在一段代码中遇到了一个问题,其中包括设置一些运算符,你可以看到下面的代码,我在类的一个方法中遇到了一个问题,正如你在代码中看到的那样,
qrelay
,我在这一部分中得到了一个错误,对于范围(0,n-1)内的i
:op=self.trans(op,self.bh[i],self.ah[i+1],self.bph[i],self.aph[i+1],B)
op=self.trans(op,self.bv[i],self.av[i+1],self.bpv[i],self.apv[i+1],B)
,您可以在下面的代码列表中正确地看到它。我不知道为什么,但我得到了一个
索引器:列表索引超出了范围
,尽管我觉得一切都很好

将numpy导入为np
从sympy进口*
类别Qrely:
定义(self,ah=(),bh=(),av=(),bv=(),aph=(),bph=(),apv=(),bpv=()):
self.ah=ah
self.bh=bh
self.av=av
self.bv=bv
self.aph=aph
self.bph=bph
self.apv=apv
self.apv=bpv
def变速器(自身、op、a、b、ap、bp、b):
p=B*[ap,bp]
op=op.subs(a,p[0])
op=op.subs(b,p[1])
返回操作
def旋转矩阵(自,θ):
c=np.cos(θ)
s=np.sin(θ)
返回np.矩阵([[c,s],-s,c]])
def qrelay_op(自身、n、φ、α、δ):
self.ah=[范围(1,n)中i的符号('a_H1{:d}'。格式(i))]
self.bh=[范围(1,n)中i的符号('b_H1{:d}'。格式(i))]
self.av=[范围(1,n)中i的符号('a_V1{:d}'。格式(i))]
self.bv=[范围(1,n)中i的符号('b_V1{:d}'。格式(i))]
打印(self.ah、self.bh、self.av、self.bv)
打印(self.ah[1])
op=0
对于范围(0,n-1)内的i:
op+=phi[i]*(self.ah[i]*self.bh[i]+self.av[i]*self.bv[i])
B=1/sqrt(2)*np.数组([[1,1],-1,1]]
self.aph=[范围(1,n)中i的符号(“a''u H1{:d}”.format(i))]
self.bph=[范围(1,n)中i的符号(“b''u H1{:d}”.format(i))]
self.apv=[范围(1,n)中i的符号(“a''u V1{:d}”.format(i))]
self.bpv=[范围(1,n)中i的符号(“b''u V1{:d}”.format(i))]
打印(self.aph、self.bph、self.apv、self.bpv)
对于范围(0,n-1)内的i:
op=self.trans(op,self.bh[i],self.ah[i+1],self.bph[i],self.aph[i+1],B)
op=self.trans(op,self.bv[i],self.av[i+1],self.bpv[i],self.apv[i+1],B)
op=self.trans(op,self.ah[0],self.av[0],self.aph[0],self.apv[0],self.alpha)
op=自转换(op,自bh[n-1],自bv[n-1],自bph[n-1],自bpv[n-1],自旋转矩阵(δ))
syms=Qrely(self.ah、self.bh、self.av、self.bv、self.aph、self.apv、self.bpv)
返回符号,op
当我想通过调用类和通过键入
A=Qrely()print(A.qrelay_op(3,np.array([10,20,10]),10,20])来测试它时,

IndexError: list index out of range` and the error according to the traceback is in: 

line 58, in qrelay_op op=self.trans(op,self.bh[i],self.ah[i+1],self.bph[i],self.aph[i+1], B)

因为
self.aph
self.bph
总是相同的长度,当你尝试做
self.bph[i],self.aph[i+1]
您正在访问
self.bph
列表中的最后一项,并试图访问超过
self.aph中最后一项的项目

请将问题从Radin GeekGaming正确地重新格式化:如果您在开始的某个地方陈述您的编程语言会更好。但是在底部,我可以看到标签或者你的兴趣(我不确定是哪一个)在说Python。但是我必须这样做,因为在这一行中,
op=self.trans(op,self.bh[I],self.ah[I+1],self.bph[I],self.aph[I+1],B)
我正在调用trans方法,它将在本例中被替换为
self.bh[I]
将被
self.bph[i]
self.ah[i+1]
替换为
self.aph[i+1]
self.aph[i+1]
不存在。