Использование .format () для форматирования списка с аргументами ширины поля

Я недавно (наконец-то?) Начал использовать.format() а также есть, возможно, немного неясный вопрос об этом.

Дано

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

а также

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

отлично работают и оба печатают:

Irene Adler    35 24.80
Irene Adler    35 24.80

Я не знал, что мог бы иметь дело со списками, как в (1), что является аккуратным. я видел аргументы ширины поля (2) со старым% форматирование раньше.

Мой вопрос о желании сделать что-то вроде этого, который сочетает в себе (1) и (2):

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

Однако я не могу сделать это, и я не смог выяснить, из документации, если это вообще возможно. Было бы неплохо просто предоставить список для печати и аргументы для ширины.

Кстати, я тоже попробовал это (без удачи):

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

В обоих случаях я получил:

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

Я также пытался использоватьzip() объединить две последовательности без удачи.

My question is:

Могу ли я указать список для печати, эффективно делая то, что я пытался неудачно сделать в (3) и (4) (ясно, если это возможно, я 'm не используя правильный синтаксис) и если да, то как?

Ответы на вопрос(2)

Ваш ответ на вопрос