title: Nested python list assignment
body: <p>What I want to do is assign a nested list to another list. For example, from alist to blist.</p>
  
  <pre><code>alist = [[0], [1], [2], [3]]
  blist = alist[:]
  blist[0].append(1)
  </code></pre>
  
  <p>In this way, <code>id(alist[0])</code> equals <code>id(alist[1])</code>, so alist also changes to <code>[[0,1], [1], [2], [3]]</code>, that's not what I want.</p>
  
  <p>The workaround I have is:</p>
  
  <pre><code>alist = [[0], [1], [2], [3]]
  blist = []
  for item in alist:
      blist.append(item[:])
  blist[0].append(1)
  </code></pre>
  
  <p>In this workaround, alist won't be influenced by changing blist's items.
  However, it seems not so pythonic, is there any better resolution? That could resolve the deep copy of more the 2 level nested list. eg: <code>alist = [[[1], 10], [[2], 20], [[3], 30]]</code></p>