我是Python(3.x)的初学者,这是我在这里的第一篇文章,我试图解包一个元组,然后用某种格式打印它(我的话可能不太正确)。这就是我所拥有的:
w = 45667.778
x = 56785.55
y = 34529.4568
z = 789612.554
nums = (w, x, y, z)
hdr62 = '{:>15} {:>15} {:>15} {:>15}'
print(tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums))
我如何更改解压缩然后使用hdr62格式打印元组?
答案 0 :(得分:3)
也许我错过了一些东西,但是如果您只想根据nums
格式设置元组hdr62
的格式,那么您只需在其上调用str.format
并传入数字作为解包的元组:
>>> print(hdr62.format(*nums))
45667.778 56785.55 34529.4568 789612.554
如果你真的想先在元组项目上运行另一种格式,你可以单独进行:
>>> ['${:,.0f}'.format(n) for n in nums]
['$45,668', '$56,786', '$34,529', '$789,613']
>>> print(hdr62.format(*['${:,.0f}'.format(n) for n in nums]))
$45,668 $56,786 $34,529 $789,613
答案 1 :(得分:1)
根据您的问题和以下评论,您可以先使用元组理解来格式化数字,然后调用格式。 format
调用可以使用星号(*
)完成,因此:
nums2 = tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums)
print(hdr62.format(*nums2))
如果你调用一个函数并使用一个星号,那么幕后面的参数(应该是一个序列)Python解压缩序列并将其作为单独的参数提供,所以在这种情况下:
nums2 = tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums)
print(hdr62.format(*nums2))
相当于:
nums2 = tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums)
print(hdr62.format(nums[0],nums[1],nums[2],nums[3]))