Why am I getting res as [[2,3],[2,3]] and not as [[1,4],[2,3]]?

Viewed 19

Why am I getting res as [[2,3],[2,3]] and not as [[1,4],[2,3]] ?

a=[]
res=[]
a.append(1)
a.append(4)
res.append(a)
print('a =',a)
print('res =',res)
a.clear()

a.append(2)
a.append(3)
res.append(a)
print('a =',a)
print('res =',res)
a.clear()
print(a)

output

1 Answers

You need to use the [:] operator to prevent referencing a variable to another, so when you create res, all the *elements* in the list a are copied instead of being referenced at by the new variable:

a=[]
res=[]
a.append(1)
a.append(4)
res.append(a[:])
print('a =',a)
print('res =',res)
a.clear()

a.append(2)
a.append(3)
res.append(a)
print('a =',a)
print('res =',res)
a.clear()
print(a)

The output of this program is:

a = [1, 4]
res = [[1, 4]]
a = [2, 3]
res = [[1, 4], [2, 3]]
[]
Related