我正在用集合做一种图遍历
我有一个节点键的defaultdict(集合),该集合包含图中键节点有边的其他节点
在遍历过程中,我查找给定节点的两条不同边。如果它们通过边连接,我将断开它们。如果它们未连接,我将连接它们并断开它们与当前节点的连接。比如:
for e1 in edgemap[curr]:
for e2 in edgemap[curr]:
if e1 != e2:
if e1 in edgemap[e2]:
edgemap[e2].remove(e1)
edgemap[e1].remove(e2)
else:
edgemap[e1].add(e2)
edgemap[e2].add(e1)
edgemap[curr].remove(e1)
edgemap[curr].remove(e2)
当然,这段代码根本不起作用。我在迭代过程中修改一个集合。通常,当我想要进行修改时,我会迭代edgemap[\uz].copy()。 但是,在这种情况下,我实际上希望修改立即生效。。因此,如果执行“else”条件,在这种设计中,我们需要打破for循环,重新开始
目前,我想我会用这个:
while 1:
match = False
for e1 in edgemap[curr].copy():
for e2 in edgemap[curr].copy():
if e1 != e2:
match = True
if e1 in edgemap[e2]:
edgemap[e2].remove(e1)
edgemap[e1].remove(e2)
else:
edgemap[e1].add(e2)
edgemap[e2].add(e1)
edgemap[curr].remove(e1)
edgemap[curr].remove(e2)
edgemap[e1].remove(curr)
edgemap[e2].remove(curr)
break
if match:
break
但是我仍然是一个初学者。。这感觉真的很尴尬。有没有更好的方法来设计这个
目前没有回答
相关问题 更多 >
编程相关推荐