Форматировать все элементы списка

Я хочу напечатать список чисел, но я хочу отформатировать каждого члена списка перед его печатью. Например,

theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]

Я хочу, чтобы следующий вывод был напечатан, учитывая указанный выше список:

[1.34, 7.42, 6.97, 4.55]

Для любого члена списка, я знаю, что могу отформатировать его, используя

print "%.2f" % member

Есть ли команда/функция, которая может сделать это для всего списка? Я могу написать один, но задавался вопросом, существует ли он уже.

Ответ 1

Если вы просто хотите напечатать цифры, вы можете использовать простой цикл:

for member in theList:
    print "%.2f" % member

Если вы хотите сохранить результат позже, вы можете использовать понимание списка:

formattedList = ["%.2f" % member for member in theList]

Затем вы можете распечатать этот список, чтобы получить результат как в своем вопросе:

print formattedList

Обратите внимание, что % устаревает. Если вы используете Python 2.6 или новее, предпочитаете использовать format.

Ответ 2

Для Python 3.5.1 вы можете использовать:

>>> theList = [1.343465432, 7.423334343, 6.967997797, 4.5522577]
>>> strFormat = len(theList) * '{:10f} '
>>> formattedList = strFormat.format(*theList)
>>> print(formattedList)

Результат:

'  1.343465   7.423334   6.967998   4.552258 '

Ответ 3

Вы можете использовать понимание списков, объединение и некоторые манипуляции с строками, как показано ниже:

>>> theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]
>>> def format(l):
...     return "["+", ".join(["%.2f" % x for x in l])+"]"
... 
>>> format(theList)
'[1.34, 7.42, 6.97, 4.55]'

Ответ 4

Вы можете использовать функцию карты

l2 = map(lambda n: "%.2f" % n, l)

Ответ 5

Очень короткое решение с использованием ".format() и выражения генератора:

>>> theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]

>>> print(['{:.2f}'.format(item) for item in theList])

['1.34', '7.42', '6.97', '4.55']