<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 08.00.0681.000">
<TITLE>modifying lists of lists</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">I</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">m just learning Python, so I</FONT></SPAN><SPAN LANG="en-us"> <FONT COLOR="#0070C0" FACE="Calibri">apologize</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri"> for a newby question</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">.  I</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">m trying to work with lists of lists, the lowest level of which hold one or more tuples.  I</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">ve tried to conden</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">se what</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri"> I</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">ve tried.  The code is:</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">#! Python 2.7</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">import copy</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">list = []</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">for i in range(8):</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">    list.append((i, i+1))</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">H = [[list[0], list[2]]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">I = [[list[0], list[2]]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">J = [[list[0], list[2]]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri"># H.append(tuple)</FONT></SPAN><SPAN LANG="en-us"><FONT FACE="Calibri"></FONT></SPAN><SPAN LANG="en-us"> <FONT COLOR="#0070C0" FACE="Calibri">did it three times for example, and because</FONT></SPAN><SPAN LANG="en-us"> <FONT COLOR="#0070C0" FACE="Calibri">H=I=J won</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">t work for the example.</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print 'H - list with one list of tuples:', H</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">H.append([list[1], list[3]])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">I.append([list[1], list[3]])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">J.append([list[1], list[3]])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print 'H - added list of tuples:', H</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri"># duplicate first list of tuples -> next in sequence</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">H.insert(1,H[0])</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print 'duplicated 1st list in list:', H</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri"># works, but can't edit the second list</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">H[1].pop(1)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print "First 2 lists can't be independently edited"</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print H,'\n'</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri"># try to split up the list and rebuild</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">J = J[:1] + J[:1] + J[1:]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print 'J:', J</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">J[1].pop(1)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print "Still can't independently delete tuple:\n", J</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri"># try the copy module</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">I = I[:1] + copy.deepcopy(I[:1]) + I[1:]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print '\nI:', I</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">I[1].pop(1)</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">print "deepcopy requred for independence:\n", I</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">The third trial works:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">>>> </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">H - list with one list of tuples: [[(0, 1), (2, 3)]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">H - added list of tuples: [[(0, 1), (2, 3)], [(1, 2), (3, 4)]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">duplicated 1st list in list: [[(0, 1), (2, 3)], [(0, 1), (2, 3)], [(1, 2), (3, 4)]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">First 2 lists can't be independently edited</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">[[(0, 1)], [(0, 1)], [(1, 2), (3, 4)]] </FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">J: [[(0, 1), (2, 3)], [(0, 1), (2, 3)], [(1, 2), (3, 4)]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">Still can't independently delete tuple:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">[[(0, 1)], [(0, 1)], [(1, 2), (3, 4)]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">I: [[(0, 1), (2, 3)], [(0, 1), (2, 3)], [(1, 2), (3, 4)]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">deepcopy requred for independence:</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">[[(0, 1), (2, 3)], [(0, 1)], [(1, 2), (3, 4)]]</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#00B050" FACE="Calibri">>>></FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">Is there a better way?  I</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">ve spent a lot of time looking through the docu</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">mentation so I</FONT></SPAN><SPAN LANG="en-us"> <FONT COLOR="#0070C0" FACE="Calibri">anticipated</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri"> the results of the first attempt.  I postulate the split approach didn</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">t work because the</FONT></SPAN><SPAN LANG="en-us"> <FONT COLOR="#0070C0" FACE="Calibri">assignment was a pointer to the object, in spite of the splitting up of the</FONT></SPAN><SPAN LANG="en-us"> <FONT COLOR="#0070C0" FACE="Calibri">list.</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">  B</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">y the way</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">, copy.copy doesn</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">’</FONT></SPAN><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">t work.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">Thanks for your insights.</FONT></SPAN></P>

<P DIR=LTR><SPAN LANG="en-us"><FONT COLOR="#0070C0" FACE="Calibri">Ed</FONT></SPAN><SPAN LANG="en-us"></SPAN></P>

</BODY>
</HTML>