上章我講過(guò),定義數(shù)字類(lèi)型、整型和浮點(diǎn)型的時(shí)候,是調(diào)用了int()和float()這兩個(gè)功能,那同理,我們定義字符串的時(shí)候也是一樣,一定是觸發(fā)了某個(gè)功能。
我定義一個(gè)字符串,name=‘于謙’,要知道它背后觸發(fā)的功能,就直接打印他的類(lèi)型就知道了。
name = '于謙'
print(name, type(name))
它的類(lèi)型是str,所以它背后觸發(fā)的功能就是str(),然后把于謙放進(jìn)去了。
然后再來(lái)看他的類(lèi)型轉(zhuǎn)換。
我們知道int()可以把串?dāng)?shù)字的字符串轉(zhuǎn)成整型,float()可以把整型和串?dāng)?shù)字或者帶小數(shù)的字符串轉(zhuǎn)成浮點(diǎn)型。那么同樣str()也有一樣的功能。
不同的是str()可以把任意類(lèi)型都轉(zhuǎn)成字符串,比如我放個(gè)列表,他的結(jié)果就相當(dāng)一在這個(gè)列表的兩邊加上了引號(hào),然后這就不叫列表了,叫字符串。
str("['a','b']")
然后我把這個(gè)str賦值給l,打印一下看看。
l = str("['a','b']")
print(l, type(l))
雖然打印出來(lái),看上去是個(gè)列表,但是他的類(lèi)型就是字符串,長(zhǎng)得像列表的字符串。因?yàn)榇蛴∽址脑?,字符串的引?hào)是不會(huì)被打印出來(lái)的。
當(dāng)然,我植妍詩(shī)了傳列表進(jìn)去,你還可以傳任意類(lèi)型都傳進(jìn)去,比如字典、布爾值甚至是None都會(huì)被轉(zhuǎn)成字符串。
str的類(lèi)型轉(zhuǎn)換就先講這么多,接著我們來(lái)看str的索引取值。
有的小伙伴就會(huì)問(wèn)了,索引取值不是只有列表才可以嗎?怎么字符串也可以?其實(shí)我們前面講基本數(shù)據(jù)類(lèi)型的時(shí)候提過(guò),這就是字符串的特殊之處,因?yàn)樗幌窳斜砟菢幽艽娑鄠€(gè)值,它只是一個(gè)值,是以轉(zhuǎn)字符,有多個(gè)字符按順序排列組成的。
在Python里面只要是多個(gè)有元素按順序排列的,Python都為它設(shè)置了索引的概念。所以字符串能按索引取值。
我現(xiàn)在定義一個(gè)字符串,info=‘good good study,day day up’,好好學(xué)習(xí),天天向上。
info = 'good good study day day up'
先來(lái)索引取值,取第二個(gè)字符o,索引就是1.
info = 'good good study day day up'
print(info[1])
就直接取到了,要注意的是,空格也算一個(gè)字符。來(lái)取個(gè)空格。
info = 'good good study day day up'
print(info[4])
空格也被取到了。
如果從后往前取值,那和列表一樣用負(fù)數(shù),最后一個(gè)剛談好就是p。
info = 'good good study day day up'
print(info[-1])
列表能夠改值,那么字符串可不可以呢?答案是不樂(lè)意,因?yàn)樽址遣豢勺冾?lèi)型。
我們先來(lái)改值試試看,會(huì)不會(huì)報(bào)錯(cuò)。我把第一個(gè)字符改成大寫(xiě)的G。
info[0]='G'
print(info)
直接報(bào)錯(cuò),這就是字符串的特殊之處。它雖然是有多個(gè)字符按順序排列的,但是它的本質(zhì)就是一個(gè)值!只是Python給這種按順序排列的類(lèi)型都設(shè)置了索引的概念,僅此而已。
所以字符串只能按索引取值。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 字符串類(lèi)型轉(zhuǎn)換與索引取值