title: Should I avoid converting to a string if a value is already a string?
body: <p>Sometimes you have to use list comprehension to convert everything to string including strings themselves.</p>
  
  <pre><code>b = [str(a) for a in l]
  </code></pre>
  
  <p>But do I have to do:</p>
  
  <pre><code>b = [a if type(a)==str else str(a) for a in l]
  </code></pre>
  
  <p>I was wondering if <code>str</code> on a string is optimized enough to <em>not</em> create another copy of the string.</p>
  
  <p>I have tried:</p>
  
  <pre><code>&gt;&gt;&gt; x="aaaaaa"
  &gt;&gt;&gt; str(x) is x
  True
  </code></pre>
  
  <p>but that may be because Python can cache strings, and reuses them. But is that behaviour guaranteed for any value of a string?</p>