title: index(max(my_list)) in list comprehension gives all instances of the max value instead of just the first occurrence
body: <p>Consider the following code snippet --></p>
  
  <pre><code>li = [3,1,2,3]
  print([x+99 if li.index(x)!=li.index(max(li)) else x-(99*(len(li)-1)) for x in li ])
  </code></pre>
  
  <p>I was expecting the output to be :</p>
  
  <pre><code>[-294, 100, 101, 102]
  </code></pre>
  
  <p>but the actual output on running the program was :</p>
  
  <pre><code>[-294, 100, 101, -294]
  </code></pre>
  
  <p>Why do i get both instances of the maximum value in the list instead of just the first occurrence?</p>
  
  <p>How exactly are list comprehensions evaluated and how is that responsible for the output in my program ?</p>