Hello, while trying to learn how to program using objects in python (up to now simple scripts were sufficient for my needs) I stumbled over the a problem while assigning values to an object.
The following piece of code shows what I intend to do: <---snip---> class new_class(object): def __init__( self, internal_list=[]): self.internal_list= internal_list external_list=[[b*a for b in xrange(1,5)] for a in xrange(1,5)] print external_list first_collection=[new_class() for i in xrange(4)] temporary_list=[[] for i in xrange(4)] for i in xrange(4): for j in xrange(4): temporary_list[i].append(external_list[i][j]) first_collection[i].internal_list=temporary_list[i] #Now everything is as I want it to be: for i in xrange(4): print first_collection[i].internal_list #Now I tried to get the same result without the temporary #variable: second_collection=[new_class() for i in xrange(4)] for i in xrange(4): for j in xrange(4): second_collection[i].internal_list.append(external_list[i][j]) #Which obviously leads to a very different result: for i in xrange(4): print second_collection[i].internal_list <---snip---> Can someone explain to me, what's happening here and why the two approaches do not lead to the same results? Thanks in Advance. Regards, Manuel -- A hundred men did the rational thing. The sum of those rational choices was called panic. Neal Stephenson -- System of the world http://www.graune.org/GnuPG_pubkey.asc Key fingerprint = 1E44 9CBD DEE4 9E07 5E0A 5828 5476 7E92 2DB4 3C99 -- http://mail.python.org/mailman/listinfo/python-list