python3.7 IndexError:列表索引超出范围问题

时间:2019-11-25 15:51:31

标签: python

我运行IndexError: list index out of range时遇到错误my_function(1, data)。此函数应该找到给定点id与其他点之间的距离。

代码:

import math 

p = []
point_dist = []
distance = 0
data = [[1, 5, 2], [2, 6, 2], [3, 7, 2], [4, 8, 2]]

def my_function(point_id,data):
    print(len(data))   
    p.append(data[point_id])
    data.pop(point_id)
    print(len(data))

    for i in range(0, 3, 1):
        for j in range(0, 3, 1):
            distance = math.sqrt(pow(p[0][j] - data[i][j], 2))

错误

File "C:\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

File "C:/Users/ay/YandexDisk/python/1/untitled1.py", line 13, in <module>
    distance=math.sqrt(pow(p[0][j]-data[i][j],2))

IndexError: list index out of range

2 个答案:

答案 0 :(得分:1)

您从未调用函数my_function来填充数组p。 因此,您的数组为空,并且您无法访问[0][j]元素。

答案 1 :(得分:0)

您仅定义了名称为my_function()的函数 然后,您必须先调用它以获取p list。此外,我更喜欢显式返回pdata

import math 

p=[]
point_dist=[]
distance=0
data=[[1,5,2],[2,6,2],[3,7,2],[4,8,2]]

def my_function(point_id, data):
    print(len(data))   
    p.append(data[point_id])
    data.pop(point_id)
    print(len(data))

    return p, data

p, data = my_function(1, data)

for i in range(0,3,1):
    for j in range(0,3,1):
     distance=math.sqrt(pow(p[0][j]-data[i][j],2))

退出:

4
3