首页 > 解决方案 > 如何通过 Python 列表避免访问节点

问题描述

我想通过以下代码打印起始节点和结束节点的组合,而不重复同一对。我已经尝试过以下方式。但它并没有避免访问节点。

例如,如果有 (1,2) ,则 (2,1) 不应该在列表中。如果 (2,1) 已打印,则 (1,2) 不应打印。请帮我解决这个问题。我想通过没有 itertools 来做到这一点。有没有办法在这个循环中做到这一点?

startnodes = [0,1,2,3,4]
endnodes = [0,1,2,3,4]

arb =[(x,z)  for x in startnodes for z in endnodes if x!=z]
print(arb)

标签: pythonalgorithmlistloopsnodes

解决方案


如果您对列表进行排序,创建一个元组并将其添加到 a set,这应该会自动删除您的重复项。

startnodes = [0,1,2,3,4]
endnodes = [0,1,2,3,4]

result ={tuple(sorted([x,z]))  for x in startnodes for y in endnodes if x!=y}
print(result)

推荐阅读