Использование .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 не используя правильный синтаксис) и если да, то как?