title: Why does 'append' mutates all elements in a list?
body: <p>I am building a list of lists.  I am reading the elements from an input file. I am reading in each
  line in the file as a string-single-element to a sub-list in the list.  First, I created
  the list of lists:</p>
  
  <pre><code>&gt;&gt;&gt; b = [[]] * 5
  </code></pre>
  
  <p>However, when I tried to append an item, I got the following:</p>
  
  <pre><code>&gt;&gt;&gt; b[1].append("abc")
  &gt;&gt;&gt; b
  [ ['abc'], ['abc'], ['abc'], ['abc'], ['abc'])
  </code></pre>
  
  <p>Why does <code>append</code> change all the sub-lists? Is <code>insert()</code> better in this situation? </p>