title: Python list slicing efficiency
body: <p>In the following code:</p>
  
  <pre><code>def listSum(alist):
      """Get sum of numbers in a list recursively."""
      sum = 0
      if len(alist) == 1:
          return alist[0]
      else:
          return alist[0] + listSum(alist[1:])
      return sum
  </code></pre>
  
  <p>is a new list created every time when I do <code>listSum(alist[1:])</code>? </p>
  
  <p>If yes, is this the recommended way or can I do something more efficient? (Not for the specific function -this serves as an example-, but rather when I want to process a specific part of a list in general.) </p>
  
  <p>Edit:</p>
  
  <p>Sorry if I confused anyone, I am not interested in an efficient <code>sum</code> implementation, this served as an example to use slicing this way.</p>