2013-12-04 2 views
0

Если у меня есть список форматов ['ABC',0.1234,'DEF'], и я хотел, чтобы распечатать его делать что-то вродеПечать списка с String.Format округления для членов флоат

l = ['ABC',0.1234,'DEF'] 
print('\t'.join(map(str, l))) 

Но я также хотел бы, чтобы закруглить поплавок так что выход будет ABC\t0.12\tDEF.

я могу это сделать что-то вроде:

a,b,c = l 
print('{}\t{:.2f}\t{}'.format(a,b,c)) 

Но поскольку л только один член гораздо большего списка, я хотел бы быть в состоянии сделать это с помощью списка понимания или что-то более вещий.

+1

Вы имеете в виду что-то вроде этого? 'print ('{} \ t {:. 2f} \ t {}'. format (* l))' – sPaz

+0

Да sPaz точно. Если вы ответите, я приму это. Я всегда забываю об использовании *. Спасибо –

ответ

2

Как уже упоминалось в комментариях, вы можете просто сделать это для большой список:

print('{}\t{:.2f}\t{}'.format(*l)) 

Обратите внимание, что .format() также поддерживает индексирование списка. Что-то вроде:

print('0[0] 0[1] 0[2]'.format(l)) 

Edit:

«? Структура данных здесь список списков триплетных Есть ли простой способ сделать строку форматирования на неизвестном список размера» Вы можете попробовать:

>>> print('\t'.join("{:.2f}".format(x) if isinstance(x, float) else str(x) for k 
in l for x in k)) 
+1

, но это будет делать это только для первых 3 предметов в указанном большом списке? –

+0

Структура данных представляет собой список списков триплетов. Есть ли простой способ сделать форматирование строк в списке неизвестных размеров? –

+0

@IanFiddes Из ответа jonrsharpe вы можете добавить вложенный цикл для обработки этого случая. Я отредактировал свой ответ, чтобы отредактировать это изменение. – sPaz

2

Вы могли бы использовать:

print('\t'.join("{:.2f}".format(x) if isinstance(x, float) else str(x) for x in l)) 
2

Вы можете определить функцию для этого:

def float_or_str(x): 
    try: 
     return '{:.2f}'.format(x) 
    except ValueError: 
     return '{}'.format(x) 

l = ['ABC',0.1234,'DEF'] 
print('\t'.join(map(float_or_str, l))) 

дает

ABC 0.12 DEF 
Смежные вопросы