溫文默克的學習筆記Python篇(3)——表格打印

這裡是溫文默克的學習筆記—Python篇(3),要分享的例子來自《python編程快速上手 讓繁瑣工作自動化》的字符串章節的習題—表格打印。先來說一下題目的要求:

溫文默克的學習筆記Python篇(3)——表格打印

這個例子的解決思路與我之前分享的字符圖網絡那個例子有些類似,而這個例子不同之處有兩個,一個是本例子中列表的“長”大於“寬”,另一個是本例子需要進行對其操作。因此,我們首先需要知道每個內層列表中最長的字符串的長度。

溫文默克的學習筆記Python篇(3)——表格打印

筆者在這裡分享兩個方法,大家可以進行參考。

第一種:首先定義一個名為colWidths的列表,並colWidths = [0] * len(tableData),這樣它包含的0數目與 tableData 中內層列表的數目相同。接下來使用for循環嵌套獲取內層元素的長度,並將其保存一個名為length的列表中,再使用numpy模塊(要是使用這種方法的話,記得在開始部分import numpy as np)的argmax方法獲取最大的索引值,然後將其保存在colWidths列表中。

<code>

colWidths

=

[0] * len(tableData)

for

i in range(len(tableData)):

length

=

[]

for

j in tableData[i]:

length.append(len(j))

max_arg

=

np.argmax(length)

max_length

=

length[max_arg]

=

max_length

/<code>

第二種:與第一種的思路前半部分大致相同,只不過不是使用numpy模塊,而是使用if函數。先定義變量fuzhu的值為0,使用for循環嵌套,在最內層使用if函數來判斷,如果列表中元素的長度大於變量fuzhu的值,就將它的值賦給fuzhu,然後將其保存在colWidths列表中。

<code>colWidths = [

0

] *

len

(tableData)

for

i in

range

(

len

(tableData)): fuzhu =

0

for

j in

range

(

len

(tableData[i])):

if

len

(tableData[i][j]) > fuzhu: fuzhu =

len

(tableData[i][j]) colWidths[i] = fuzhu/<code>

接下來,和字符圖網絡一樣,使用for循環嵌套,不過需要注意的是我們要先獲取內層列表的數目進行for循環,否則會出現“溢出”的情況(感興趣的朋友可以試一下)。然後再實現“對其”操作就可以了,這又要如何來做呢?

溫文默克的學習筆記Python篇(3)——表格打印

這裡就需要用到rjust()、ljust()了。

rjust()和 ljust()字符串方法返回調用它們的字符串的填充版本,通過插入空格來對齊文本。這兩個方法的第一個參數是一個整數長度,用於對齊字符串,第二個可選參數將指定一個填充字符,取代空格字符。

溫文默克的學習筆記Python篇(3)——表格打印

此外,還有center()方法,語法是一樣的,但它讓文本居中,而不是左對齊或右對齊,感興趣的朋友可以嘗試一下。

因此,我們可以使用colWidths列表中的值,決定將什麼整數寬度傳遞給rjust()或ljust()字符串方法(這裡筆者要提一下,筆者實現的直接展示的那個效果,即第一列右對齊,剩下兩列左對齊,題目要求是右對齊即可,大家如果要練習的話需要注意一下)。還有就是print()函數的”end”參數需要注意一下,這裡就不再詳述了,不懂得朋友可以看一下我的上一篇或是直接在網上檢索。

<code>

for

i in

range

(

len

(tableData[

0

])):

for

j in

range

(

len

(tableData)):

if

j ==

0

:

print

(tableData[j][i].rjust(colWidths[j]) +

'\t'

, end=

''

)

else

:

print

(tableData[j][i].ljust(colWidths[j]) +

'\t'

, end=

''

)

print

()/<code>

本次分享中筆者提到了numpy模塊,這個模塊在Python中也是十分重要,對數據分析也是很有幫助,之後筆者也會分享關於numpy的例子。此外,本次分享的例子依舊是《python編程快速上手 讓繁瑣工作自動化》的習題,想要這本書的電子版的朋友可以去我上一篇文章,鏈接我留在了底部,希望能對大家有所幫助~


分享到:


相關文章: