Reputation: 1109
I'm having a problem writing the following code:
D = [
[0,3,8,999,-4],
[999,0,999,1,7],
[999,4,0,999,999],
[2,999,-5,0,999],
[999,999,999,6,0]
]
def FloydWarshall (W):
matrices = [W[:]]
pred = [W[:]]
print (matrices is pred)
print (pred is matrices)
print (pred is W)
print (matrices is W)
for i in range(0,len(pred[0])):
for j in range(len(pred[0][i])):
if pred[0][i][j] != 999 and pred[0][i][j] != 0:
pred[0][i][j] = i +1
else:
pred[0][i][j] = False
return (matrices,pred)
FloydWarshall(D)
the values that are being returned are the exact same matrices, why is this? The print statement say that they are not pointers to the same spot in memory, correct?
Upvotes: 0
Views: 62
Reputation: 133554
You are only making a shallow copy of the nested lists, so mutating them will still affect both matrices. You might want to use copy.deepcopy
Upvotes: 5