Python 查找至少共享一个x或y点的(x,y)对

Python 查找至少共享一个x或y点的(x,y)对,python,Python,假设我有以下列表: [[452, 268], [303, 181], [452, 331], [378, 217], [572, 476], [464, 218], [42, 440], [428, 476], [42, 36], [478, 35], [232, 275], [428, 440], [378, 36], [572, 35]] 可以看到存在共享相同x点或y点的对,例如第一个元素[45226]和第三个元素[452331]共享相同的x点 创建具有[x1 y

假设我有以下列表:

[[452, 268],
 [303, 181],
 [452, 331],
 [378, 217],
 [572, 476],
 [464, 218],
 [42, 440],
 [428, 476],
 [42, 36],
 [478, 35],
 [232, 275],
 [428, 440],
 [378, 36],
 [572, 35]]
可以看到存在共享相同x点或y点的对,例如第一个元素
[45226]
和第三个元素
[452331]
共享相同的x点

创建具有
[x1 y1 x2 y2]
形式元素的数组的最佳方法是什么,其中一个点
x1 y1 x2 y2
中的两个点相等。所以本质上我想循环所有(x,y)点,确定它们是否共享至少一个相等的元素,并将它们组合成
[x1 y1 x2 y2]


我的想法是在整个列表中循环并比较连续的元组,但我找不到任何好的方法来实现这一点。我还试着寻找
itertools
是否会有人帮忙,但运气不好。任何帮助都将不胜感激。

我希望我已经理解了你的问题。这将打印共享一个公共坐标(x或y)的所有点的组合:

印刷品:

[[452, 268, 452, 331],
 [378, 217, 378, 36],
 [572, 476, 572, 35],
 [42, 440, 42, 36],
 [428, 476, 428, 440],
 [572, 476, 428, 476],
 [42, 440, 428, 440],
 [42, 36, 378, 36],
 [478, 35, 572, 35]]

对于
点=[[452268]、[452331]、[404268]]

结果是:

[[452, 268, 452, 331], [452, 268, 404, 268]]

给定输入的样本输出?您可以将每列输入计数器,然后只比较
x
y
至少显示两次的对。这将保持比较对的复杂性,但会减少要比较的对的数量。@ZainArshad例如从
[452268]
[452331]
表单
[452268452331]
的输出应该可以工作。@Nate为什么不使用元组,甚至嵌套列表呢<代码>[452268452331]不是很直观,对于
[452268]
[452331]
[404268]
的结果会是什么?描述这一点很好。输出列表中的元素不应超过4个。所以对于
[452268]
[452331]
[404268]
来说,输出应该是三个可能的组合,它们共享一个点,但是如果一个循环通过所有对,这两种方法都不应该实现吗?
[[452, 268, 452, 331], [452, 268, 404, 268]]