ASKSAGE: Sage Q&A Forum - RSS feedhttps://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Tue, 08 Dec 2020 03:34:24 +0100copying lists, embedded multigraphshttps://ask.sagemath.org/question/54605/copying-lists-embedded-multigraphs/I am working with planar, embedded, labelled multigraphs.
I am trying to define a function `face_modification` that
modifies the set of faces when an edge of the graph is deleted.
I thought that when taking a copy of a list, and altering the copy,
the original list would not change. However, when I evaluate
the function `face_modification` below, with `Gf=F1`,
my original list (`F1`) is being altered,
and I can't figure out why or how to prevent it.
Here, `G1` is the labelled graph without double edges,
`Gd` is the graph of double edges, `Gt` is the graph
of triple edges, and `Gf` is a list, the `i`-th entry
of which is a list of labelled edges on the boundary of face `i`.
def edge_on_faces(j, S, Gf, G1, Gd, Gt):
variables = ([G1.edges()[i][2] for i in range(len(G1.edges()))] +
[Gd.edges()[i][2] for i in range(len(Gd.edges()))] +
[Gt.edges()[i][2] for i in range(len(Gt.edges()))])
if j in range(len(variables)):
if [str(Gf[n][q][2]) == str(variables[j])
for n in S for q in range(len(Gf[n]))].count(True) > 0:
return 1
else:
return 0
else:
return 0
def face_modification(i, Gf, G1, Gd, Gt):
variables = ([G1.edges()[k][2] for k in range(len(G1.edges()))] +
[Gd.edges()[k][2] for k in range(len(Gd.edges()))] +
[Gt.edges()[k][2] for k in range(len(Gt.edges()))])
l = [m for m in range(len(Gf)) if edge_on_faces(i, [m], Gf, G1, Gd, Gt)==1]
# PF: list of two faces in Gf with the ith edge on the boundary
PF = [Gf.copy()[l[p]] for p in range(len(l))]
GGf = Gf.copy()
for m in range(len(PF)):
GGf.remove(PF[m])
for k in range(len(PF[m])):
if str(PF[m][k][2]) == str(variables[i]):
PF[m].remove(PF[m][k])
else:
PF[m] = PF[m]
if len(PF) == 2:
B = GGf + [PF[0] + PF[1]]
return B
else:
return 'error'
Thanks a lot for your help!IngridTue, 08 Dec 2020 03:34:24 +0100https://ask.sagemath.org/question/54605/