title: Altering multiprocessing lists
body: <p>I've recently come across a strange behaviour in Python 2.7.</p>
  
  <pre><code>&gt;&gt;&gt; import multiprocessing as mp
  &gt;&gt;&gt; lst = mp.Manager().list()
  &gt;&gt;&gt; lst.append([1,2])
  &gt;&gt;&gt; lst.append([3,4])
  &gt;&gt;&gt; print(lst)
  [[1, 2], [3, 4]]
  &gt;&gt;&gt; lst[0][1] = 123
  &gt;&gt;&gt; print(lst)
  [[1, 2], [3, 4]]     
  </code></pre>
  
  <p>Huh? Why the first element of the multiprocessing list wasn't changed? It works fine with ordinary lists!</p>
  
  <p>Let's try it a different way.</p>
  
  <pre><code>&gt;&gt;&gt; lst[0] = [1,123]
  &gt;&gt;&gt; print(lst)
  [[1, 123], [3, 4]]
  </code></pre>
  
  <p>OK, so at least I have a workaround. But why the assigment <code>lst[0][1] = 123</code> in the first snippet did not work?</p>