范围()函数不起作用
Range() function not working
我正在尝试编写一个程序,该程序将获得一个二维列表,其中包含网格上的点坐标(例如[[4, 7], [5, 6], [5, 2]]
),并且 return 在 [=25] 期间通过的所有点=].我们可以走对角线。
def pole(lista):
passed = [] #List with all points passed
before = lista[0] #list with coordinates before
for i in range(1,len(lista)):
first = [list(range(before[0],lista[i][0]))] # Lists that should have all points
second = [list(range(before[1],lista[i][1]))] # passed from point to point
if(len(first) == 1): #If we do not go diagonal, one list will only have one number here,
first = [before[0]*len(second)] # but we need the same number of itmes,
if(len(second) == 1): # so we do not get IndexOutOFRange error in next for
second = [before[1]*len(first)]
#print(first,second)
for j in range(len(first)):
passed.append([first[j], second[j]])
before = lista[i]
return passed
我们使用示例列表作为输入。 [[4, 7], [5, 6], [5, 2]]
问题是输出错误,不知道为什么:
[[4, 7], [5, 6]]
输出应该是:
[[4,7], [5,6], [5,5], [5,4], [5,3], [5,2]]
我觉得是range函数的问题
那是因为range()
函数不计算最后一个元素。
>>> x = [1,2,3,4]
>>> for i in range(len(x)):
print (i)
0
1
2
3
>>>
你看,4
不在这里。你必须写 for i in range(len(something)+1)
.
我认为最简单的倒退方式(假设您已经导入 scipy)是说->
因为我在 scipy.linspace(10,8,3)
我正在尝试编写一个程序,该程序将获得一个二维列表,其中包含网格上的点坐标(例如[[4, 7], [5, 6], [5, 2]]
),并且 return 在 [=25] 期间通过的所有点=].我们可以走对角线。
def pole(lista):
passed = [] #List with all points passed
before = lista[0] #list with coordinates before
for i in range(1,len(lista)):
first = [list(range(before[0],lista[i][0]))] # Lists that should have all points
second = [list(range(before[1],lista[i][1]))] # passed from point to point
if(len(first) == 1): #If we do not go diagonal, one list will only have one number here,
first = [before[0]*len(second)] # but we need the same number of itmes,
if(len(second) == 1): # so we do not get IndexOutOFRange error in next for
second = [before[1]*len(first)]
#print(first,second)
for j in range(len(first)):
passed.append([first[j], second[j]])
before = lista[i]
return passed
我们使用示例列表作为输入。 [[4, 7], [5, 6], [5, 2]]
问题是输出错误,不知道为什么:
[[4, 7], [5, 6]]
输出应该是:
[[4,7], [5,6], [5,5], [5,4], [5,3], [5,2]]
我觉得是range函数的问题
那是因为range()
函数不计算最后一个元素。
>>> x = [1,2,3,4]
>>> for i in range(len(x)):
print (i)
0
1
2
3
>>>
你看,4
不在这里。你必须写 for i in range(len(something)+1)
.
我认为最简单的倒退方式(假设您已经导入 scipy)是说-> 因为我在 scipy.linspace(10,8,3)