1 min readNov 21, 2018
Balasubramanian Raju, I really appreciate that you brought python reference count here. Below I added the reference count behavior in python initially list (a) is assigned with some reference count, after I removed the element 1 from the list, all the reference count is not increased/decreased, but partially it’s happening. One more time I removed element 1 from the list, but this time reference count are not increased/decreased/partially. Even in the second example also reference count are increased/decreased/partially.
~$ python
>>> a = [1, 2, 3, 1, 1, 1]
>>> import sys
>>> sys.getrefcount(a[0]) # 683
>>> sys.getrefcount(a[1]) # 324
>>> sys.getrefcount(a[2]) # 113
>>> sys.getrefcount(a[3]) # 828
>>> sys.getrefcount(a[4]) # 828
>>> sys.getrefcount(a[5]) # 828
>>> a.remove(1) # [2, 3, 1, 1, 1]
>>> sys.getrefcount(a[0]) # 324
>>> sys.getrefcount(a[1]) # 113
>>> sys.getrefcount(a[2]) # 827
>>> sys.getrefcount(a[3]) # 827
>>> sys.getrefcount(a[4]) # 827
>>> a.remove(1) # [2, 3, 1, 1]
>>> sys.getrefcount(a[0]) # 324
>>> sys.getrefcount(a[1]) # 113
>>> sys.getrefcount(a[2]) # 827
>>> sys.getrefcount(a[3]) # 827>>> b = [[]] * 3 # [[], [], []]
>>> sys.getrefcount(b[0]) # 4
>>> sys.getrefcount(b[1]) # 4
>>> sys.getrefcount(b[2]) # 4
>>> b[0].append(1)
>>> sys.getrefcount(b[0]) # 4
>>> sys.getrefcount(b[1]) # 4
>>> sys.getrefcount(b[2]) # 4