流提取。如何从列表列表中提取包含公共元素(行开始和结束坐标)的新列表列表?
Stream Extraction. How can I extract from a list of lists a new list of lists containing common elements (line starting and ending coordinates)?
我是新来的。我正在尝试编写一个代码,该代码 return 从此处的列表列表开始的列表列表。
list = [[1,[7,16],[7,13]],
[2,[7,13],[5,12]],
[3,[5,12],[4,12]],
[4,[5,12],[5,11]],
[5,[7,13],[8,5]],
[6,[8,5],[9,5]],
[7,[8,5],[7,4]]]
list中每个列表的格式是这样的:
[id,[starting line coordinates],[ending line coordinates]
此列表表示一个形状文件特征,其中每一行都是流的不同线段,从中我想从起点(第一个特征的起始线坐标)提取每条不同的可能路径跟随网络上游(我发了一张图片来说明思路)。Illustrative pictures
我需要检查结束坐标是否与 list 中其他元素的起始坐标匹配。
我为此做了如下:
elementi = [[1,[7,16],[7,13]],
[2,[7,13],[5,12]],
[3,[5,12],[4,12]],
[4,[5,12],[5,11]],
[5,[7,13],[8,5]],
[6,[8,5],[9,5]],
[7,[8,5],[7,4]]]
controllo = []
check = []
lista_rami = []
for e in elementi:
lista_rami =[]
controllo.append(e[2])
for e in elementi:
check.append(e[1])
if check == controllo:
lista_rami.append(e[0])
check = []
else:
check = []
controllo = []
print('Common node' + str(lista_rami))
现在我卡住了,我想要得到的结果如下:
output_list = [[1,2,3],[1,2,4],[1,5,6],[1,5,7]]
其中列表中的数字是每一行的 ID。
对我来说最困难的部分是让这个代码对任何数量的元素和任何不同初始 list
中的组合有效
不知道是不是让我明白了。有人知道吗?
感谢您的关注!
您在处理不能满足您需求的坐标系上花费了太多精力。
这是一个图形问题:找到给定树中从根到每个叶节点的所有路径。将您的表示更改为简单的图边列表:以您认为方便的方式标记节点,列出您的边,并将您当前的 ID 保留为边标签。
[
[1,root,A],
[2,A,B],
[3,B,C],
[4,B,D],
[5,A,E],
[6,E,F],
[7,E,G]
]
您需要在节点标签周围加上引号,否则使它们成为合法的 Python 值。现在,要么使用标准图形包(例如 networkx
),要么查找如何实现树遍历算法(例如 Wikipedia)。
这应该让你继续。要求我们向您展示如何实施记录良好的算法是题外话。做编码;如果您遇到困难,那么您可能遇到了一个很好的 Stack Overflow 问题。
我是新来的。我正在尝试编写一个代码,该代码 return 从此处的列表列表开始的列表列表。
list = [[1,[7,16],[7,13]],
[2,[7,13],[5,12]],
[3,[5,12],[4,12]],
[4,[5,12],[5,11]],
[5,[7,13],[8,5]],
[6,[8,5],[9,5]],
[7,[8,5],[7,4]]]
list中每个列表的格式是这样的:
[id,[starting line coordinates],[ending line coordinates]
此列表表示一个形状文件特征,其中每一行都是流的不同线段,从中我想从起点(第一个特征的起始线坐标)提取每条不同的可能路径跟随网络上游(我发了一张图片来说明思路)。Illustrative pictures
我需要检查结束坐标是否与 list 中其他元素的起始坐标匹配。 我为此做了如下:
elementi = [[1,[7,16],[7,13]],
[2,[7,13],[5,12]],
[3,[5,12],[4,12]],
[4,[5,12],[5,11]],
[5,[7,13],[8,5]],
[6,[8,5],[9,5]],
[7,[8,5],[7,4]]]
controllo = []
check = []
lista_rami = []
for e in elementi:
lista_rami =[]
controllo.append(e[2])
for e in elementi:
check.append(e[1])
if check == controllo:
lista_rami.append(e[0])
check = []
else:
check = []
controllo = []
print('Common node' + str(lista_rami))
现在我卡住了,我想要得到的结果如下:
output_list = [[1,2,3],[1,2,4],[1,5,6],[1,5,7]]
其中列表中的数字是每一行的 ID。
对我来说最困难的部分是让这个代码对任何数量的元素和任何不同初始 list
中的组合有效不知道是不是让我明白了。有人知道吗? 感谢您的关注!
您在处理不能满足您需求的坐标系上花费了太多精力。
这是一个图形问题:找到给定树中从根到每个叶节点的所有路径。将您的表示更改为简单的图边列表:以您认为方便的方式标记节点,列出您的边,并将您当前的 ID 保留为边标签。
[
[1,root,A],
[2,A,B],
[3,B,C],
[4,B,D],
[5,A,E],
[6,E,F],
[7,E,G]
]
您需要在节点标签周围加上引号,否则使它们成为合法的 Python 值。现在,要么使用标准图形包(例如 networkx
),要么查找如何实现树遍历算法(例如 Wikipedia)。
这应该让你继续。要求我们向您展示如何实施记录良好的算法是题外话。做编码;如果您遇到困难,那么您可能遇到了一个很好的 Stack Overflow 问题。