Używanie .format () do formatowania listy z argumentami szerokości pola

Niedawno (w końcu?) Zaczęłam używać.format() i mieć może nieco niejasne pytanie na ten temat.

Dany

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

i

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

działa świetnie i oba drukują:

Irene Adler    35 24.80
Irene Adler    35 24.80

Nie wiedziałem, że mogę poradzić sobie z listami jak w (1), która jest czysta. Widziałem o argumentach szerokości pola (2) ze starym% formatowanie wcześniej.

Moje pytanie dotyczy chęci zrobienia czegoś takiego, które łączy (1) i (2):

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

Nie jestem jednak w stanie tego zrobić i nie udało mi się znaleźć w dokumentacji, jeśli to możliwe. Miło byłoby po prostu podać listę do wydrukowania i argumenty dotyczące szerokości.

Przy okazji, spróbowałem tego (bez szczęścia):

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

W obu przypadkach dostałem:

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

Próbowałem też użyćzip() połączyć dwie sekwencje bez szczęścia.

Moje pytanie brzmi:

Czy mogę określić listę, która ma być drukowana efektywnie, robiąc to, co próbowałem bezskutecznie w (3) i (4) (wyraźnie, jeśli to możliwe, nie używam właściwej składni), a jeśli tak, to w jaki sposób?

questionAnswers(2)

yourAnswerToTheQuestion