title: Why does df.apply(tuple) work but not df.apply(list)?
body: <p>Here's a dataframe:</p>
  
  <pre><code>    A  B  C
  0   6  2 -5
  1   2  5  2
  2  10  3  1
  3  -5  2  8
  4   3  6  2
  </code></pre>
  
  <p>I could retrieve a column which is basically a tuple of columns from the original <code>df</code> using <code>df.apply</code>:</p>
  
  <pre><code>out = df.apply(tuple, 1)
  print(out)
  
  0    (6, 2, -5)
  1     (2, 5, 2)
  2    (10, 3, 1)
  3    (-5, 2, 8)
  4     (3, 6, 2)
  dtype: object
  </code></pre>
  
  <p>But if I want a list of values instead of a tuple of them, I can't do it, because it doesn't give me what I expect:</p>
  
  <pre><code>out = df.apply(list, 1)
  print(out)
  
      A  B  C
  0   6  2 -5
  1   2  5  2
  2  10  3  1
  3  -5  2  8
  4   3  6  2
  </code></pre>
  
  <p>Instead, I need to do:</p>
  
  <pre><code>out = pd.Series(df.values.tolist())
  print(out)
  
  0    [6, 2, -5]
  1     [2, 5, 2]
  2    [10, 3, 1]
  3    [-5, 2, 8]
  4     [3, 6, 2]
  dtype: object
  </code></pre>
  
  <p>Why can't I use <code>df.apply(list, 1)</code> to get what I want?</p>
  
  <hr>
  
  <p><strong>Appendix</strong></p>
  
  <p>Timings of some possible workarounds:</p>
  
  <pre><code>df_test = pd.concat([df] * 10000, 0)
  
  %timeit pd.Series(df.values.tolist()) # original workaround
  10000 loops, best of 3: 161 µs per loop
  
  %timeit df.apply(tuple, 1).apply(list, 1) # proposed by Alexander
  1000 loops, best of 3: 615 µs per loop
  </code></pre>