【发布时间】:2019-10-15 06:20:52
【问题描述】:
for i in range(0, len(list_stops)):
for j in range(1, len(list_stops[i])):
current = stops_from_stop(list_stops[i][j])
list_stops.extend(current)
for k in range(0, len(current)):
for m in range(0, len(current[k])):
list_stops_x.extend([current[k][m]])
if id_b in list_stops_x:
#rest of code
list_stops 是一个列表列表。比如[[1,2,3], [4,5,6]]
list_stops_x 是 list_stops 中所有数字的单个列表。例如[1,2,3,4,5,6]。基本上用来作为进入其余代码的条件,最后有一个return语句,所以循环不会重复。
我发现循环在到达list_stops 的第一个版本的最终索引后结束,但我不断扩展list_stops 并希望循环继续进入扩展。因此,例如,如果我在循环中将[7,8,9] 扩展到list_stops,如果找不到id_b,我仍然希望它循环通过[7,8,9],但它会在6 处停止。
注意:这只是整个函数的一部分,但我很确定问题出在此处。这也是入门编程课程,所以一个简单的解决方案就可以了:)完整的代码如下
def find_path(stops, routes, stop_a, stop_b):
id_a = stop_a[0]
id_b = stop_b[0]
unused = unused_stops()
if id_b in list(unused):
return []
total_route = list()
all_stops = stops_from_stop(id_a)
list_stops_x = stops_from_stop_x(id_a)
list_stops = stops_from_stop(id_a)
for index in range(0, len(all_stops)):
if id_b in all_stops[index]:
return find_route(stops, routes, stop_a, stop_b)
for i in range(0, len(list_stops)):
for j in range(1, len(list_stops[i])):
current = stops_from_stop(list_stops[i][j])
list_stops.extend(current)
for k in range(0, len(current)):
for m in range(0, len(current[k])):
list_stops_x.extend([current[k][m]])
if id_b in list_stops_x:
stops_used_rev = [id_b]
last_route = list_stops[len(list_stops) - 1]
current_stop = last_route[0]
stops_used_rev += [current_stop]
for i in range(0, len(list_stops)):
if (current_stop in list_stops[i]) and (list_stops[i][0] == id_a):
stops_used_rev += [id_a]
break
elif current_stop in list_stops[i]:
current_stop = last_route[0]
stops_used_rev += [current_stop]
stops_used = stops_used_rev[::-1]
for index in range(0, len(stops_used) - 1):
total_route.extend(find_route(stops, routes, stops[stops_used[index]], stops[stops_used[index + 1]]))
return total_route
stops_from_stop 查找可从当前停靠点访问的列表停靠点并附加到另一个列表。 stops_from_stops_x 做同样的事情,但改为扩展
【问题讨论】:
-
我发布的解决方案对您有用吗?如果是,请将其标记为已解决
-
使用while循环。
标签: python-3.x list loops