Python學(xué)習(xí)筆記——print()函數(shù)一行式打印容器實(shí)例

聲明

文章為本人原創(chuàng)妄迁,如果您覺(jué)得閱讀后能有些許助益疗韵,實(shí)為本人榮幸兑障。本人雖為計(jì)算機(jī)專(zhuān)業(yè)出身,但十多年基礎(chǔ)教育干下來(lái)真是才藝荒廢殆盡蕉汪。您若發(fā)現(xiàn)文中不實(shí)之處流译,請(qǐng)一定不吝賜教給我留言。拜謝拜謝者疤!

涉及知識(shí)

  • Python中常見(jiàn)容器的推導(dǎo)式福澡,本文提及元組推導(dǎo)式字典推導(dǎo)式
  • 字符串格式化的相關(guān)操作宛渐,本文涉及str.format()以及類(lèi)C方式的格式化方法竞漾。

打印容器的需求

使用Python進(jìn)行編程,我們常常會(huì)遇到檢查list列表窥翩、tuple元組业岁、set集合、或者dict字典(當(dāng)然也包括這幾種容器的派生列)的需求寇蚊。最為直接的方法當(dāng)然是直接調(diào)用print()函數(shù)進(jìn)行打颖适薄:

ls = list(range(10))
print(ls)

Terminal下的運(yùn)行結(jié)果應(yīng)該為:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

但是,這些容器外嵌的符號(hào)有時(shí)并不為我們所需仗岸,又或者我們要調(diào)整輸出的效果和格式允耿。這時(shí)就不能如此簡(jiǎn)單和隨意了。遇到這種情況扒怖,我常會(huì)使用類(lèi)似于下例的編碼:

ls = range(10)

for n in ls:
  print('{}'.format(n)较锡, end=' ')

獲得的結(jié)果如下:

0 1 2 3 4 5 6 7 8 9 

如此編碼方便易懂,當(dāng)然無(wú)錯(cuò)盗痒。但如果你對(duì)于簡(jiǎn)潔性也同樣看重蚂蕴,那么肯定也會(huì)希望以盡量簡(jiǎn)短的方式來(lái)完成如此簡(jiǎn)單的工作低散。

使用元組推導(dǎo)式一行打印列表、集合或元組

我的入門(mén)書(shū)是《Learning Python The Hard Way》骡楼,記得作者有類(lèi)似下例的方法來(lái)打印列表:

ls = range(10)
print(''.join('%d ' % n for n in ls))

這種方法很簡(jiǎn)潔熔号,可能是我虛度年華后記憶衰弱,時(shí)間間隔稍久便混淆于其他語(yǔ)言最后竟然忘記鸟整。更重要的是隨著Python語(yǔ)言的發(fā)展引镊,對(duì)于規(guī)范性和可讀性也有了更高的要求。雖然官方并沒(méi)有將這種類(lèi)似于C語(yǔ)言printf()函數(shù)用來(lái)格式化打印字符串的語(yǔ)法標(biāo)記為過(guò)時(shí)篮条,但Python官方確實(shí)更為推薦使用str.format()函數(shù)來(lái)完成格式化字符串的工作弟头。因此,我便心安理得地告訴自己可以忘記這種類(lèi)C的print一行式方法兑燥,而替以基于元組推導(dǎo)式的print一行式亮瓷。當(dāng)然,如果你需要打印set集合或者tuple元組降瞳,無(wú)需修改嘱支,也可以使用相同的方式完成任務(wù)。示例如下:

print(' '.join(str(n) for n in ls))

如果你在上述代碼中遍尋元組推導(dǎo)式無(wú)果挣饥,不必介意除师,實(shí)際上我的代碼是以下編碼的精簡(jiǎn)形式:

print(' '.join( (str(n) for n in ls) ))

這樣的形式具有很強(qiáng)的簡(jiǎn)潔性和可讀性,并且由于元組推導(dǎo)式的拓展能力扔枫,我們甚至可以對(duì)原始列表中的元素進(jìn)行過(guò)濾或選擇汛聚。請(qǐng)看下面的示例:

# 只打印ls中平方值大于30的元素
print(' '.join(str(n) for n in ls if n**2 > 30))

使用元組推導(dǎo)式一行式打印字典

如果你是Python的老玩家,只愿固守類(lèi)C方式的格式化字符串方法短荐,那么以下方式再合適不過(guò):

dd = {
      'Name': 'John',
      'Age': 19,
      'Score': 95
     }

print('\n'.join('%s=%s' % (k, v) for k, v in dd.items()))

類(lèi)似于基于列表推導(dǎo)式的一行式打印列表方式倚舀,打印dict字典的方式也可以非常簡(jiǎn)單。請(qǐng)看示例如下:

print('\n'.join('{}={}'.format(k, v) for k, v in dd.items()))

為了強(qiáng)調(diào)其元組推導(dǎo)式本質(zhì)忍宋,還原代碼如下:

print('\n'.join( ('{}={}'.format(k, v) for k, v in dd.items() )))

不知道你對(duì)下面的打印結(jié)果是否滿(mǎn)意:

Name=John
Age=19
Score=95
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末痕貌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子糠排,更是在濱河造成了極大的恐慌舵稠,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件入宦,死亡現(xiàn)場(chǎng)離奇詭異哺徊,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乾闰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)落追,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人涯肩,你說(shuō)我怎么就攤上這事轿钠”荆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵谣膳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我铅乡,道長(zhǎng)继谚,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任阵幸,我火速辦了婚禮花履,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挚赊。我一直安慰自己诡壁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布荠割。 她就那樣靜靜地躺著妹卿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔑鹦。 梳的紋絲不亂的頭發(fā)上夺克,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音嚎朽,去河邊找鬼铺纽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哟忍,可吹牛的內(nèi)容都是我干的狡门。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼锅很,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼其馏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起粗蔚,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尝偎,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后鹏控,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體致扯,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年当辐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抖僵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缘揪,死狀恐怖耍群,靈堂內(nèi)的尸體忽然破棺而出义桂,到底是詐尸還是另有隱情,我是刑警寧澤蹈垢,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布慷吊,位于F島的核電站,受9級(jí)特大地震影響曹抬,放射性物質(zhì)發(fā)生泄漏溉瓶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一谤民、第九天 我趴在偏房一處隱蔽的房頂上張望堰酿。 院中可真熱鬧,春花似錦张足、人聲如沸触创。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哼绑。三九已至,卻和暖如春吵聪,著一層夾襖步出監(jiān)牢的瞬間凌那,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工吟逝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帽蝶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓块攒,卻偏偏與公主長(zhǎng)得像励稳,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子囱井,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 城市的夜終于寂靜下來(lái)驹尼,此時(shí)是凌晨三點(diǎn)左右。 高空中一座20層樓高的長(zhǎng)臂吊車(chē)的剪影靜靜地等待著不久的清晨的到來(lái)庞呕,它好...
    Aealt閱讀 221評(píng)論 0 1
  • 標(biāo)題 #一級(jí)標(biāo)題##二級(jí)標(biāo)題###三級(jí)標(biāo)題 引用 >引用的句子 換行 段落內(nèi)強(qiáng)制換行:句子后兩個(gè)空格+回車(chē) 段落換...
    長(zhǎng)衫趙云閱讀 304評(píng)論 0 0
  • 提出背景 房屋房?jī)r(jià)預(yù)測(cè) 術(shù)語(yǔ)轉(zhuǎn)換 矩陣表示 將上房屋特征 和房?jī)r(jià) 矩陣化 將上式 轉(zhuǎn)換為矩陣乘 為什么要這么轉(zhuǎn)換呢...
    陳文瑜閱讀 445評(píng)論 0 1
  • 感激劉鳳老師對(duì)我的感激新翎,其實(shí)我只是因?yàn)橹览蠋熕屯旰⒆踊貋?lái)后會(huì)繼續(xù)分享,所以選擇留在里面沒(méi)有出來(lái)住练。當(dāng)老師說(shuō)不...
    羅秀春閱讀 299評(píng)論 0 2