【发布时间】:2021-08-26 05:25:30
【问题描述】:
我正在尝试使用最近邻法为旅行推销员问题创建一个近似解。城市由加权邻接矩阵以嵌套列表的形式表示,如下所示:
[[0, 4, 3, 5], [4, 0, 5, 3], [3, 5, 0, 4], [5, 3, 4, 0]]
还有一个布尔矩阵,用于确定哪些节点已被访问。
我的问题:我正在尝试使用多条件生成器表达式来查找每个尚未访问过的列表中的非零最小值。我正在尝试使用此行来执行此操作:listMin = min(i for i in next if ((i>0) and (visited[next.index(i)] == False))) 我怎样才能让它工作?
请注意,当我只是查找非零值时,此生成器表达式按预期运行,它是通过给我一个 ValueError: min() arg is empty sequence 将其丢弃的附加条件语句。
更多代码在这里:
start = matrix[0]
visited[0] = True
listMin = min(i for i in start if i>0)
cost = listMin
minIndex = start.index(listMin)
while (False in visited):
next = matrix[minIndex]
visited[minIndex] = True
order.append(int(minIndex))
listMin = min(i for i in next if ((i>0) and (visited[next.index(i)] == False)))
minIndex = next.index(listMin)
cost += listMin`
编辑-想补充一点,在使用 if 语句验证 min 节点未被访问后,我的代码似乎正在为测试用例工作,但我只是好奇是否以这种方式使用生成器表达式是可能的
【问题讨论】:
标签: python python-3.x generator-expression