2016-03-18 21 views
0

我知道必須有一個簡單的方法來做到這一點,而無需導入模塊,但我找不到它。格式列表取決於其中的項目數

無論我的列表中有多少項目,我都希望能夠保持相同的格式。因此,對於我列表中的每個項目,它都會添加另一個{:^ 3}。

list = [1, 2, 3, 4, 5] 

print("| {:^3}{:^3}{:^3}{:^3}{:^3}\n".format(*list)) 

最簡單的方法是什麼?

+0

' 「| 」+「」。聯接( 「{:^ 3}」 爲_列表).format (*列表)'也許? – Pythonista

回答

3

最簡單的方法是使用"".join函數以及列表理解,該列表理解對數組中的每個項目執行一些操作,然後獲取數組的字符串表示形式。

>>> print("| " + "".join(["{:^3}".format(x) for x in list]) + "\n") 
| 1 2 3 4 5 

這適用於"{:^3}".format(x)每一個項目在list,其中x是當前項目。然後,它使用這個"".join,並且沒有分隔符列表項作爲一個字符串,例如:

>>> "".join(["1", "2", "3"]) 
'123' 

另一個注意:你不應該使用一個變量叫list因爲list是一個內置功能在Python中。

+0

你的例子是錯誤的。你不能加入任何東西,但字符串。如果你做'。「.join([1,2,3]),你會得到'TypeError:sequence item 0:expected string,int found' – zondo

+0

@zondo Oops,修正了這個問題。謝謝。 –

+0

使用'.join()'時,列表理解比生成器更高效。 – zondo

0

在Python中join功能是非常有用特別是對於這樣的事情:

("| "+"".join(["{:^3}" for _ in list]) + "\n").format(*list)