如何在列表列表中挑选一些项目,并检查它是否存在于元组列表中



假设我有元组列表edges = [(0,1),(0,3),(0,4),(1,2),(1,3),(1,4),(2,3),(2,4)]和列表列表CCD_ 2。然后我想检查顶点中每个列表的第一个和最后一个元素是否存在于边中,然后做一些事情。

例如,在作为[1,4,2,3,0]的第一个顶点列表中,作为10的第一个和最后一个项在边(0,1)中存在(它可以是(0,1(和(1,0((,然后对所有顶点列表做一些相同的事情。我不知道如何继续下面的代码。

edges = [(0,1),(0,3),(0,4),(1,2),(1,3),(1,4),(2,3),(2,4)]
vertices = [[1,4,2,3,0],[3,0,1,2,4],[2,3,0,1,4],[1,3,2,1,4],[0,3,2,4,1]]
for i in range(len(vertices)):
if vertices[i][0] and vertices[i][-1] in edges:
do stuff...

如果你想将你的值与元组进行比较,那么你可能应该将它们变成元组:

for idx, i in enumerate(vertices):
t = tuple((i[0], i[-1]))
if t in edges:
print(f'Item {idx} matches edge {t}.')
elif t[::-1] in edges:
print(f'Item {idx} matches edge {t[::-1]}.')
Out:
Item 0 matches edge (0, 1).
Item 2 matches edge (2, 4).
Item 3 matches edge (1, 4).
Item 4 matches edge (0, 1).

编辑:一个更通用的版本,为顶点和边提供匹配项的索引。

for idx, i in enumerate(vertices):
t = tuple((i[0], i[-1]))
for j, k in enumerate(edges):
if t == k:
print(f'Vertex {idx} matches edge {t} at index {j}.')
elif t[::-1] == k:
print(f'Vertex {idx} matches edge {t[::-1]} at index {j}.') 
Out:
Vertex 0 matches edge (0, 1) at index 0.
Vertex 2 matches edge (2, 4) at index 7.
Vertex 3 matches edge (1, 4) at index 5.
Vertex 4 matches edge (0, 1) at index 0. 

最新更新