我无法在for循环中增加列表中特定的值

2024-09-30 05:30:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python进行我的自动驾驶汽车项目。所以,我研究了一个从Dijkstra算法返回值的算法。我给出了算法(位置,目的地)并返回最短路径。然后我加上方向值。但我不能在某个时候增加值。这是我的密码:

coordinates = [['X',0,20],['B',15,20],['H',15,45],['G',20,45],['Y',20,55]]
dir = dijsktra(graph,'X','Y')
indexes = []
for i in range(len(dir)):
   for j in range(len(coordinates)):
           if dir[i] == coordinates[j][0]:
               indexes.append(j)

for i in range(len(dir)-1):
    if coordinates[indexes[i]][1] == coordinates[indexes[i+1]][1]:
        turnons.append(['R',i+1])
    elif coordinates[indexes[i]][2] == coordinates[indexes[i+1]][2]:
        turnons.append(['L',i+1])

list_lenght = len(dir) + len(turnons)
for i in range(list_lenght):
    for j in range(len(turnons)):
        if turnons[j][1] == i:
            dir.insert(i,turnons[j][0])
            if turnons[j] != turnons[len(turnons)-1]:
                print(turnons[j])
                turnons[j + 1][1] += 1 // That's is the problem.

这是预期的输出:['L', 1]['R', 3]['L', 5]['R', 7]

这就是我得到的:['L', 1]['R', 3]['L', 4]

这里

  • L=左
  • R=右

Tags: 项目in算法forlenifdirrange
1条回答
网友
1楼 · 发布于 2024-09-30 05:30:26

女士们先生们,我们抓到他了

coordinates = [['X',0,20],['B',15,20],['G',20,45],['Y',20,55],['H',15,45]]
dir = dijsktra(graph,'B','X')
indexes = []
for i in range(len(dir)):
    for j in range(len(coordinates)):
            if dir[i] == coordinates[j][0]:
                indexes.append(j)

turnons = []
newdir = []
for i in range(len(dir)-1):
    if coordinates[indexes[i]][1] == coordinates[indexes[i+1]][1]:
        turnons.append(['R',i+1])
    elif coordinates[indexes[i]][2] == coordinates[indexes[i+1]][2]:
        turnons.append(['L',i+1])

uzunluk = len(dir) + len(turnons)
turnsyc = 0
dirsyc = 0
print(dir,turnons)
for i in range(uzunluk):
    if i % 2 == 0 or i == 0:
        newdir.append(dir[dirsyc])
        dirsyc += 1
    else:
        newdir.append(turnons[turnsyc][0])
        turnsyc += 1

相关问题 更多 >

    热门问题