1

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

Aniruddh
  • 21
  • 1
  • You're simply appending *references* to `a` into `res`, so when you change `a`, all the entries in `res` change. Try something like `res.append(a[:])` to append a copy of `a` instead – Nick Jun 11 '22 at 08:31

1 Answers1

1

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]]
[]
Cardstdani
  • 4,999
  • 3
  • 12
  • 31