如何打开包装并打印元组

时间:2017-01-19 13:47:49

标签: python python-3.x

我是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格式打印元组?

2 个答案:

答案 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]))