python字符串處理以靈活為最大優(yōu)點(diǎn)
python字符串如何進(jìn)行相關(guān)的知識(shí)學(xué)習(xí),我們?cè)谑褂玫臅r(shí)候有不少的問(wèn)題阻礙著我們的使用。下面我們就詳細(xì)的看看如何才能更好的使用相關(guān)的python字符串,希望對(duì)大家有所幫助。#t#
看了大家用C++、C#、Java等語(yǔ)言的實(shí)現(xiàn),總感覺(jué)牛刀殺雞太麻煩,有興趣的朋友可以自己寫(xiě)寫(xiě)看或者直接看原文的網(wǎng)友回復(fù)。我最近一段時(shí)間Python寫(xiě)的比較多,讀到這些題目時(shí)候,就有一種躍躍欲試的沖動(dòng)。因?yàn)槲抑烙肞erl,Python,Ruby等動(dòng)態(tài)語(yǔ)言來(lái)做這類題目,會(huì)是非常理想的。后來(lái)我做了這兩道題目,結(jié)果也令人滿意,代碼之簡(jiǎn)潔保持在所有答案的前列。
先看第一題Python解答:
- dic = {}
- for s in "abcdefgabc":
- dic[s] = 1 if s not in dic else (dic[s]+1)
- print '\n'.join('%s,%s' % (k, v) for k, v in dic.items())
- 輸出結(jié)果:
- a,2
- c,2
- b,2
- e,1
- d,1
- g,1
- f,1
Python的四行代碼分別做了dictionary的聲明,賦值,字符串的遍歷,以及高效拼接。
如果還沒(méi)有看出它的簡(jiǎn)潔和強(qiáng)大的話,請(qǐng)看第二題的解法:
- def main(offset=6):
- string = u'靜夜思 李白床前明月光,疑似地上霜。舉頭望明月,低頭思故鄉(xiāng)。090131'
- a = [[' ']*offset for row in xrange(offset)]
- for i in xrange(offset):
- for j in xrange(offset):
- a[i][j] = string[j + i*offset]
- b = [[r[col] for r in a[::-1]] for col in xrange(len(a[0]))]
- print '\n'.join([u'┊'.join(unicode(c) for c in row)for row in b])
輸出結(jié)果:
- 0┊低┊舉┊疑┊床┊靜9┊頭┊頭┊似┊前┊夜0┊思┊望┊地┊明┊思1┊故┊明┊上┊月┊ 3┊鄉(xiāng)┊月┊霜┊光┊李1┊。┊,┊。┊,┊白
這題如果用C#等實(shí)現(xiàn),代碼要在20行以上。下面我簡(jiǎn)單介紹一下這幾行代碼:
- 第3行,在Python里面二維“數(shù)組”通過(guò)嵌套list來(lái)實(shí)現(xiàn),這里初始化一個(gè)6行6列的二維數(shù)組;
- 第7行,我們把“矩陣”順時(shí)針旋轉(zhuǎn)了90度(行列置換,并且對(duì)置換后的行首尾對(duì)調(diào)-這里的::-1就是用來(lái)置換一個(gè)list的trick);
最后一行,我們把數(shù)組里的每行中元素,每行之間分別用兩個(gè)不同字符拼接起來(lái)。join方法以及for..in..語(yǔ)句在python字符串中是相當(dāng)常見(jiàn)的用法。
通過(guò)這兩題,我們看到Python在處理字符串時(shí)候的十分靈活方便,雖然一種語(yǔ)言的好壞不應(yīng)完全靠是否簡(jiǎn)潔來(lái)衡量,但對(duì)于我個(gè)人而言,Python是目前我用過(guò)的最好的語(yǔ)言。而且對(duì)于趣味題來(lái)說(shuō),這不就是我們解題的趣味所在嗎?
以上就是對(duì)python字符串的相關(guān)信息介紹。