python - Python - 如何从单个元组列表中动态创建单独的元组列表
问题描述
我想从下面的元组列表中创建一个动态元组列表:
Optimal_Route = [(1, 5), (2, 3), (3, 1), (4, 2), (5, 4)]
.
我的最终目标是拥有如下内容:
路线 = [[(1, 5), (5, 4), (4, 2)], [(2, 3), (3, 1)]]
我希望这个列表的“Route”元组列表基于“depotList”和“affectedAreaList”是动态的。下面是我为这个任务编写的一段代码,但我正在努力让它变得高效和动态。我很乐意为此提供一些帮助。谢谢
Optimal_Route = [(1, 5), (2, 3), (3, 1), (4, 2), (5, 4)]
Route = []
depotList = [1,2]
affectedAreaList = [3,4,5]
count = 0
while count < len(Optimal_Route):
next_route = True
cur_route = []
for tup in Optimal_Route:
if tup[0] in depotList and next_route == True:
cur_route.append(tup)
b = tup[1]
for tup in Optimal_Route:
if tup[0] == b:
cur_route.append(tup)
if not tup[1] in depotList:
next_route = False
b = tup[1]
print b
for tup in Optimal_Route:
if tup[0] == b:
cur_route.append(tup)
Route.append(cur_route)
next_route = True
cur_route = []
count +=1
解决方案
根据您提供的数据,使用字典而不是处理元组:
Optimal_Route = [(1, 5), (2, 3), (3, 1), (4, 2), (5, 4)]
Route = []
depotList = [1,2]
affectedAreaList = [3,4,5]
legs = dict(Optimal_Route)
routes = {}
for start in depotList :
place = start
routes[start] = []
end_places = [ i for i in depotList if i != start ]
while place not in end_places :
routes[start].append((place,legs[place]))
place = legs[place]
for i in routes.keys() :
print(i,routes[i])
print([ i for i in routes.values()])
推荐阅读
- firebase - 是否可以删除 currentUser firebase 身份验证用户?
- java - 所有 @Before 和 @After 场景方法都在场景执行之前被调用
- reactjs - 如果填写了 form.item 2,则禁用 form.item 1
- ansible - 如何逃跑?在 Ansible 任务中?
- git - 如何签出文件的先前版本但不覆盖 git 中的文件?
- firebase - 使用自定义的 uid 创建用户
- php - 如何在php中提交所有单选按钮的所有选定值?
- asp.net - ASP.NET Core 错误代码 = '0x80004005':80008082
- ipopt - 试图编译 HSL 以获得 IPOPT
- python - 如何使用openCV计算盒子的堆栈