Usando .format () para formatear una lista con argumentos de ancho de campo

Recientemente (¿por fin?) Comencé a usar.format() y tengo una pregunta un poco oscura al respecto.

Dado

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

y

(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))

funciona muy bien y ambos imprimen

Irene Adler    35 24.80
Irene Adler    35 24.80

No sabía que podía lidiar con las listas como en (1), lo cual está limpio. Había visto sobre argumentos de ancho de campo (2) con el viejo% formateo antes.

Mi pregunta es sobre querer hacer algo como esto que combine (1) y (2):

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

Sin embargo, no puedo hacer esto, y no he podido averiguar de la documentación si esto es posible. Sería bueno proporcionar la lista que se va a imprimir y los argumentos para el ancho.

Por cierto, también probé esto (sin suerte):

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

En ambos casos obtuve:

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

También traté de usarzip() Combinar las dos secuencias sin suerte.

Mi pregunta es:

¿Puedo especificar una lista para imprimir de manera efectiva haciendo lo que estaba tratando de hacer sin éxito en (3) y (4) (claramente si esto es posible, no estoy usando la sintaxis correcta) y, de ser así, cómo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta