Python : how to append new elements in a list of list? -


here simple program:

 = [[]]*3   print str(a)   a[0].append(1)  a[1].append(2)  a[2].append(3)   print str(a[0])  print str(a[1])  print str(a[2]) 

here output expecting:

 [[], [], []]  [1]  [2]  [3] 

but instead :

 [[], [], []]  [1, 2, 3]  [1, 2, 3]  [1, 2, 3] 

there not here !

you must do

a = [[] in xrange(3)] 

not

a = [[]]*3 

now works:

$ cat /tmp/3.py = [[] in xrange(3)]  print str(a)  a[0].append(1) a[1].append(2) a[2].append(3)  print str(a[0]) print str(a[1]) print str(a[2])  $ python /tmp/3.py [[], [], []] [1] [2] [3] 

when a = [[]]*3 same list [] 3 times in list. the same means when change 1 of them change of them (because there 1 list referenced 3 times).

you need create 3 independent lists circumvent problem. , list comprehension. construct here list consists of independent empty lists []. new empty list created each iteration on xrange(3) (the difference between range , xrange not important in case; xrange little bit better because not produce full list of numbers , returns iterator object instead).


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -