我运行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
答案 0 :(得分:1)
您从未调用函数my_function
来填充数组p
。
因此,您的数组为空,并且您无法访问[0][j]
元素。
答案 1 :(得分:0)
您仅定义了名称为my_function()
的函数
然后,您必须先调用它以获取p
list
。此外,我更喜欢显式返回p
和data
:
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