Это потому, что вы используете одну и ту же переменную L
дважды, один раз здесь
L = [0,60,30,40,30,30,20,40]
Затем переназначить его, перебирая здесь
for i in L:
remove_random_links(R,i)
A = nx.adj_matrix(R)
L = nx.laplacian_matrix(R) #<--------change variable name
Используйте разные имена переменных, и это должно сработать, попробуйте это, например,
import random
from numpy import linalg as LA
def remove_random_links(A,E):
print A.edges, E
rs = random.sample(A.edges, E)
A.remove_edges_from(rs)
N = 30
L_edges = [0,60,30,40,30,30,20,40] #<--- changed it to L_edges
rep = 15
d = []
g = []
for j in range(rep):
R = nx.grid_graph(dim=[N,N])
_deg = []
_gap = []
for i in L_edges: #<--- changed it to L_edges
remove_random_links(R,i)
A = nx.adj_matrix(R)
L = nx.laplacian_matrix(R)
eigwd, eigv = LA.eigh(L.todense())
eigw = np.sort(eigwd)
eigw0 = eigw[0]
eigw1 = eigw[1]
eigw2 = eigw[2]
eigw3 = eigw[3]
gap = eigw2 - eigw1
deg = eigw3 - eigw2
_deg.append(deg)
_gap.append(gap)
print("meow")
d.append(_deg)
g.append(_gap)
print("M")
mean_deg = [np.mean(d[i]) for i in range(rep)]
mean_gap = [np.mean(g[i]) for i in range(rep)]
std_deg = [np.std(d[i]) for i in range(rep)]
std_gap = [np.std(g[i]) for i in range(rep)]