我想打印一个数字列表,但我想在打印之前格式化列表的每个成员。例如,
theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]
给定上述列表作为输入,我希望打印以下输出:
[1.34, 7.42, 6.97, 4.55]
对于列表中的任何一个成员,我知道我可以使用
print "%.2f" % member
是否有可以为整个列表执行此操作的命令/函数?我可以写一个,但想知道一个是否已经存在。
我想打印一个数字列表,但我想在打印之前格式化列表的每个成员。例如,
theList=[1.343465432, 7.423334343, 6.967997797, 4.5522577]
给定上述列表作为输入,我希望打印以下输出:
[1.34, 7.42, 6.97, 4.55]
对于列表中的任何一个成员,我知道我可以使用
print "%.2f" % member
是否有可以为整个列表执行此操作的命令/函数?我可以写一个,但想知道一个是否已经存在。
如果您只想打印数字,您可以使用一个简单的循环:
for member in theList:
print "%.2f" % member
如果您想存储结果以备后用,您可以使用列表推导:
formattedList = ["%.2f" % member for member in theList]
然后,您可以打印此列表以获取问题中的输出:
print formattedList
另请注意,它%
已被弃用。如果您使用的是 Python 2.6 或更新版本,则更喜欢使用format
.
对于 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 '
使用 "".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']
您可以使用列表推导、连接和一些字符串操作,如下所示:
>>> 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]'
您可以使用地图功能
l2 = map(lambda n: "%.2f" % n, l)
如果你不需要保存你的值,试试这个:
list = [0.34555, 0.2323456, 0.6234232, 0.45234234]
for member in list:
form='{:.1%}'.format(member)
print(form)
输出:
34.6%
23.2%
62.3%
45.2%