python - 如何通过 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)
解决方案
如果您对列表进行排序,创建一个元组并将其添加到 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)
推荐阅读
- maven - Maven本地存储库指向错误的位置
- java - 如何转换列表
- > 到对象[][]
- c++ - 为什么成员变量被“全自动”捕获而不是显式命名捕获?
- android - 在android文本视图中动态绘制水平线
- javascript - 如何使用此脚本函数更改 textarea 的值?
- php - Laravel 5.5.* 目录结构不同
- javascript - 过滤值第二次点击显示所有元素
- spring-boot - Spring Boot:单元测试存储库方法的最佳策略是什么?
- javascript - 从没有数组的函数链中提取数据
- google-cloud-platform - 在 Apache Beam 数据流中使用 Spanner