good, good. i think we have a candidate for writing the slides for meeting 11 (even thought i already spoke with amit about doing it - he might agree to switch ;) ).
what sais you? --guy On Sun, 4 Dec 2005, Nir Soffer wrote: > > On 4 Dec, 2005, at 2:09, RaeNye wrote: > > >> Why use this strange name "mlist_a"? Instead use: > >> multiple_lists = [list1, list2] > > > > I don't see a problem with Guy's name selection. I consider your > > suggestion > > worse, as the object called "multiple_lists" is, in fact, a single > > list that > > contains two other lists. You might call the outer list "nested_list" > > or > > "outer_list", but "multiple_lists" has nothing to do with the object > > itself. > > "lists" will be a better name. But why the names in this code are so > lousy? because its not a concrete example, its too abstract. Using real > life examples can make everything more clear. > > For example, bart simpson downloaded our first game, and lisa created a > list of scores for each family member: > > >>> lisa_scores = [90, 85, 80] > >>> bart_scores = [50, 65] > >>> homer_scores = [] # too stupid to play > >>> marge_scores = [] # too busy > > # Lets keep all the scores in one list > >>> simpsons_scores[lisa_scores, bart_scores, homer_scores, > marge_scores] > > Now we can ask questions about it: > > What were lisa scores? > >>> simpsons_scores[0] > [90, 85, 80] > >>> lisa_scores > [90, 85, 80] > > they look equal... > >>> simpsons_scores[0] == lisa_scores > True > > They are. > > Is it the samelist of a copy? > >>> simpsons_scores[0] is lisa_scores > True > > This answer the question, what happens when you do list = [foo, bar] - > you create reference to the objects. > > homer and marge have both empty list. They must be equal: > >>> homer_scores== marge_scores > True > > But they are not the same list: > >>> homer_scores is marge_scores > False > > lisa teach homer to play, and add some scores: > >>> homer_scores.append(10) > > the simpsons_scores list updated: > >>> simpsons_scores > [[90, 85, 80], [50, 65], [10], []] > > homer_scores and simpsons_scores[2] reference the same list object > (which Python manage for us somewhere in the memory) > > homer tries again, made some improvement: > >>> homer_scores.append(11) > >>> simpsons_scores > [[90, 85, 80], [50, 65], [10, 11], []] > > bart is not happy with lisa results: > >>> del lisa_scores > >>> lisa_scores > Traceback (most recent call last): > File "<stdin>", line 1, in ? > NameError: name 'lisa_scores' is not defined > > That was evil! > > >>> simpsons_scores > [[90, 85, 80], [50, 65], [10, 11], []] > > F**k! they are still there!? hmm, lisa_scores was not the list, its > only a name, the list is still there. This is exactly what Python told > us just now: "NameError: name 'lisa_scores' is not defined". > > lisa fixes the situation > >>> lisa_scores = simpsons_scores[0] > >>> lisa_scores > [90, 85, 80] > > Now [[90, 85, 80], [50, 65], [10, 11], []] is a lousy way to keep this > kind of data, because we have to remember the order of the family > members. This leads naturally to dicts - because we need it NOW to > write simpler and more readable code. > > > I hope it helps, It was fun to write :-) > > > Best Regards, > > Nir Soffer > -- guy "For world domination - press 1, or dial 0, and please hold, for the creator." -- nob o. dy