Python索引超出范围错误,不确定I';我做错了

Python索引超出范围错误,不确定I';我做错了,python,Python,我对python还比较陌生,我在大学物理课上也学过一点python 目前,我正试图编写一个程序来计算一些与向量函数有关的东西,但这并不重要,因为直到最后一节之前,我都在工作 到目前为止,该程序在2D图形上生成了一个局部极小值负载,但是我需要找到整体的最小值 for i in range(100): pyplot.xlim(x0, x1) # x0, y0 etc are constants defined before in global scope pyplot.ylim(y0

我对python还比较陌生,我在大学物理课上也学过一点python

目前,我正试图编写一个程序来计算一些与向量函数有关的东西,但这并不重要,因为直到最后一节之前,我都在工作

到目前为止,该程序在2D图形上生成了一个局部极小值负载,但是我需要找到整体的最小值

for i in range(100):
    pyplot.xlim(x0, x1) # x0, y0 etc are constants defined before in global scope
    pyplot.ylim(y0, y1)
    pyplot.plot(min_points[:,0], min_points[:,1])
    x, y = random.uniform(x0, x1), random.uniform(y0, y1)
    min_points = gradient_descent((x,y)) # gradient_descent is function used

    xmin_list, ymin_list = [], [] # now to find overall minima, initialise list
                                  # of local minima, and append those that are within
                                  # the boundaries
    if x0 < min_points[-1, 0] < x1:
        if y0 < min_points[-1, 1] < y1:

            xmin_list.append(min_points[-1, 0])
            ymin_list.append(min_points[-1, 1])

    xmin, ymin = xmin_list[0], ymin_list[1] # < error comes in this line 
范围(100)内的i的
:
pyplot.xlim(x0,x1)#x0,y0等是之前在全局范围内定义的常量
pyplot.ylim(y0,y1)
绘图(最小点[:,0],最小点[:,1])
x、 y=随机均匀(x0,x1),随机均匀(y0,y1)
最小点=梯度下降((x,y))#使用梯度下降函数
xmin_list,ymin_list=[],[]。#现在要找到总体最小值,请初始化列表
#局部极小值,并附加在
#边界
如果x0
为了完整性,我在下面包含了big for循环的其余部分,但它并没有给我一个错误

用于范围内的ix(len(xmin_列表)):
对于范围内的iy(len(ymin_列表)):
如果f((xmin,ymin,list[iy])小于f((xmin,ymin)):
xmin,ymin=xmin_列表[ix],ymin_列表[iy]
很明显,这是整个循环的中间部分,但我不确定为什么会出现错误。我试图访问每个列表的最后元素,然后将它们附加到列表中(在检查是否符合条件x0、x1等之后)

我不知道为什么它不起作用

我也确信这是一个相当复杂的寻找最小值的方法,但在我看来这似乎是合乎逻辑的,我很容易感到困惑,不得不做额外的事情,比如检查它们是否在边界内等

谢谢你的帮助!是的,我也确信我的代码看起来很糟糕,很凌乱,但我会在它工作后整理它(他们不太擅长教我们风格,只教我们功能…)

编辑:对不起,忘记准确地发布错误,这里是:

Traceback (most recent call last):
  File "filepath etc etc", line 67, in <module>
    xmin, ymin = xmin_list[0], ymin_list[1]
IndexError: list index out of range
回溯(最近一次呼叫最后一次):
文件“文件路径等”,第67行,在
xmin,ymin=xmin_列表[0],ymin_列表[1]
索引器:列表索引超出范围

。。。仔细想想,您是否正在初始化
xmin
ymin

您是否进行了一些调试?使用调试器,一步一步地检查代码。检查变量。然后,您应该找到缺陷……如果您需要帮助,您至少应该发布stacktrace和任何其他相关信息(例如,错误具体来自哪一行)。在一个几乎但并非完全无关的问题上:Python编译器在看到范围内(len())
时应该发出警告。认真地如果您不知道为什么或者如何编写它,那么现在应该停止编写真正的代码,回到Python教程中去。@Felix Kling,我在Eclipse中使用Pydev,还不太擅长使用调试器,但我正在努力@马克·拜尔斯和钦梅·坎奇;是的,它会有所帮助,编辑它以备将来参考。还有delnan,我不知道为什么或者怎么写。我没有收到任何错误或警告,尽管我知道这不是一种非常优雅的方式。在我让它工作后,我会仔细阅读它。我现在明白了为什么会出现错误,正如你所说的。谢谢你对第二部分的帮助,我现在已经修改了。我已经在错误出现的行中初始化了xmin和ymin。我只是将它们设置为我试图从列表中获取的值。编辑:哦,非常感谢,我现在已经开始工作了。我把错误所在的行放在它迭代的循环之外也没有帮助
Traceback (most recent call last):
  File "filepath etc etc", line 67, in <module>
    xmin, ymin = xmin_list[0], ymin_list[1]
IndexError: list index out of range
xmin, ymin = xmin_list[0], ymin_list[1] # < error comes in this line 
xmin = xmin_list[0]
ymin = ymin_list[0]
vmin = f((xmin, ymin))
for x in xmin_list:
    for y in ymin_list:
        v = f((x, y))
        if v < vmin:
            xmin = x
            ymin = y
            vmin = v