今天小編在學(xué)習(xí)的 Python 的時(shí)候,學(xué)到切片字符這部分,總是有很多疑惑,為什么明明 [1:5] ,但是輸出結(jié)果中總是輸出到 4,不會(huì)輸出到 5。下面我們舉例說(shuō)明:
test1 = 'Hello World!'
test2 = "w3cschool!"
print ("test1[0]: ", test1[0])
print ("test2[1:5]: ", test2[1:5])
運(yùn)行結(jié)果:
test1[0]: H
test2[1:5]: 3csc
解析:
在上面的代碼中,第一個(gè)print很好理解,因?yàn)榇a的索引通常都是從0 開(kāi)始的,對(duì)于test1 = ‘Hello World!’ 來(lái)說(shuō),索引編號(hào)為
字符 | H | e | l | l | o | W | o | r | l | d | ! | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
索引編號(hào) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
通過(guò)上面的索引編號(hào)可以看出,print ("test1[0]: ", test1[0]) 輸出的應(yīng)該是索引為0 的字符,即:H。
字符 | w | 3 | c | s | c | h | o | o | l | ! |
---|---|---|---|---|---|---|---|---|---|---|
索引編號(hào) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
這時(shí)候小編同理比較認(rèn)為第二個(gè) print——print ("test2[1:5]: ", test2[1:5]) 通過(guò)如上表格可以發(fā)現(xiàn),應(yīng)該是輸出:3csch 。結(jié)果打印出來(lái)的結(jié)果是 : 3csc 小編是百思不得姐,為啥子呢,后來(lái)再往下學(xué),心里也一直記掛這個(gè)問(wèn)題,差點(diǎn)都掉發(fā)了(趕緊摸摸頭頂有沒(méi)有又禿一分?。。?/p>
經(jīng)過(guò)查找資料發(fā)現(xiàn),在 Python 中,截取的時(shí)候如果用了 [ : ] ,那么這次截取采取左閉右開(kāi)的原則,截取的時(shí)候右邊的是開(kāi)環(huán),也就是說(shuō)是不包含的,就如上寫(xiě)的 test2[1:5],其中 5 是不包含在內(nèi)的,所以最后的輸出結(jié)果,其實(shí)只打印到 4 就結(jié)束了。故輸出結(jié)果應(yīng)該是 3csc。
總結(jié)
- python 中可使用 [ ] 截取字符
- Python 中截取時(shí)如果用了 [ : ] ,那么采用的原則是左閉右開(kāi),左側(cè)包含,右側(cè)的元素是不會(huì)被包含的。
- Python 中的字符串,list,tuple 的截取都適用上述原則