Usando .format () para formatar uma lista com argumentos de largura de campo

Eu recentemente (finalmente?) Comecei a usar.format() e ter uma pergunta talvez um pouco obscura sobre isso.

Dado

res = ['Irene Adler', 35,  24.798]

e

(1) print('{0[0]:10s} {0[1]:5d} {0[2]:.2f}'.format(res))
(2) print('{:{}s} {:{}d} {:{}f}'.format(res[0], 10, res[1], 5, res[2], .2))

trabalhe bem e ambos imprimam:

Irene Adler    35 24.80
Irene Adler    35 24.80

Eu não sabia que eu poderia lidar com listas como em (1) que é legal. Eu tinha visto sobre argumentos de largura de campo (2) com o antigo% formatação antes.

Minha pergunta é sobre querer fazer algo assim que combina (1) e (2):

(3) print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, 10, 5, .2))

No entanto, não consigo fazer isso e não consegui descobrir na documentação se isso é possível. Seria bom apenas fornecer a lista a ser impressa e os argumentos para largura.

A propósito, eu também tentei isso (sem sorte):

args = (10, 5, .2)
(4) print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, args))

Em ambos os casos, recebi:

D:\Users\blabla\Desktop>python tmp.py
Traceback (most recent call last):
  File "tmp.py", line 27, in <module>
    print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, 10, 5, .2))
ValueError: cannot switch from manual field specification to automatic field numbering

D:\Users\blabla\Desktop>python tmp.py
Traceback (most recent call last):
  File "tmp.py", line 35, in <module>
    print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, args))
ValueError: cannot switch from manual field specification to automatic field numbering

Eu também tentei usarzip() combinar as duas seqüências sem sorte.

Minha pergunta é:

Posso especificar uma lista para ser impressa efetivamente fazendo o que eu estava tentando fazer sem sucesso em (3) e (4) (claramente, se isso é possível, eu não estou usando a sintaxe certa) e em caso afirmativo, como?

questionAnswers(2)

yourAnswerToTheQuestion