Форматировать все элементы списка
Я хочу напечатать список чисел, но я хочу отформатировать каждого члена списка перед его печатью.
Например,
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']