On 15 Mag, 12:08, Gabriel <[EMAIL PROTECTED]> wrote: > Hi all > > Just wondering if someone could clarify this behaviour for me, please? > > >>> tasks = [[]]*6 > >>> tasks > > [[], [], [], [], [], []]>>> tasks[0].append(1) > >>> tasks > > [[1], [1], [1], [1], [1], [1]] > > Well what I was expecting to end up with was something like: > >>> tasks > [[1], [], [], [], [], []] > > I got this example from page 38 of Beginning Python. > > Regards > > Gabriel
The reason is that tasks = [[]]*6 creates a list with six elements pointing to *the same* list, so when you change one, it shows six times. In other words, your code is equivalent to this: >>> a = [] >>> tasks = [a,a,a,a,a,a] >>> a.append(1) >>> tasks [[1], [1], [1], [1], [1], [1]] Insead, to create a list of lists, use the list comprehension: >>> tasks = [ [] for x in xrange(6) ] >>> tasks[0].append(1) >>> tasks [[1], [], [], [], [], []] >>> Ciao ----- FB -- http://mail.python.org/mailman/listinfo/python-list