title: Why do I have to use * in front of a list in str.format(*args, **kwargs)
body: <p>After reading these:<br>
  <a href="https://stackoverflow.com/questions/15545711/special-use-of-args-kwargs">Special use of args / kwargs</a><br>
  <a href="https://www.python.org/dev/peps/pep-3102/" rel="nofollow noreferrer">https://www.python.org/dev/peps/pep-3102/</a><br>
  <a href="https://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-python-parameters">What does ** (double star) and * (star) do for parameters?</a><br>
  <a href="https://docs.python.org/3.5/library/string.html#formatstrings" rel="nofollow noreferrer">https://docs.python.org/3.5/library/string.html#formatstrings</a>  </p>
  
  <p>I want to be sure I understand well: <code>str.format(*args, **kwargs)</code></p>
  
  <p>if <code>uniques</code> is a list of two integers such as <code>[0, 0]</code>, which I would use for example in a loop with a condition to increment the first element and no condition to increment the second, with:</p>
  
  <pre><code> print('Task finished. {0!s} retrieved out of {1!s} tested'.format(*uniques))
  </code></pre>
  
  <p>I do have to use <code>*uniques</code> because instead <code>uniques</code> would be passed as a tuple to format. But if I do use</p>
  
  <pre><code> print('Task finished. {0.[0]} retrieved out of {0.[1]} tested'.format(uniques))
  </code></pre>
  
  <p>It raises value error: <code>ValueError: Empty attribute in format string</code>. Using brackets around <code>uniques</code> doesn't help. I don't really get why? Could someone please clarify?</p>
  
  <p>In the first case, is the list unpacked then converted to a tuple, while in the second, it is not because the list can't be converted by format as a tuple right away, the same way <code>format(uniques[0], uniques[1])</code> would? If I am right, why is that the case, since there's is a <code>tuple(list)</code> function to do that and so, it is very simple?</p>