在第1章中我們已經接觸過字串了,python不像其他語言一樣有字元型別,在python中,乙個字元僅僅是包含乙個字元的字串。而且字串也能夠進行運算,主要支援兩種運算子「+」和「*」,示例**如下:
>>> "a" + "b"
'ab'
>>> "a"*3
'aaa'
>>> 'a' < 'b'
true
這兩個運算子很容易理解,「+」代表字串拼接,可以組合兩個字串;「」代表複製多份然後拼接,「」後面的數字就是需要複製的份數;當比較兩個字串時是按照字典順序比較大小的。稱為運算子的過載。由於字串型別是一種序列型別,所以當我們只想取得這個序列中的一部分時,可以使用python中的分片操作:
>>> s = 'abcdefg'
>>> s[1:-1]
'bcdef'
>>> s[1]
'b'>>> s[-1]
'g'
這裡首先將字串「abcdefg」賦值給變數s,然後在s後面用一對方括號將兩個數字和乙個冒號括起來,輸出的結果正好是去掉第乙個和最後乙個字元,這就是python中對於序列型別的物件所進行的分片操作,冒號前後的兩個值為分片的位置。1代表序列中位置為1的值,–1代表序列中倒數第乙個值。這裡需要注意的是,在python中序列索引是以0開始的,而且支援負數索引,不過負數索引是從–1開始的,這很容易理解,因為數學裡的實數域沒有–0這個值。而且區間是左閉右開的,即[1:–1]代表從索引為1(並且包括1)的值開始,直到索引為–1(不包括–1)的值。初學程式設計的人可能會難以理解序列分片為什麼要這樣設計,但實際上這種左閉右開的區間是很方便的一種結構,在2.2節講解迴圈的時候會做進一步講解。另外針對序列分片還有乙個小技巧:
>>> s[1:-1:2]
'bdf'
>>> s[1:-1:1]
'bcdef'
>>>
如果在代表分片的方括號中再增加乙個冒號之後跟乙個數字,那麼這個數字就代表以什麼樣的步長進行分片?假設這個值為2,分片會前進兩個字元再取出乙個字元,就會得到「bdf」這樣的結果。實際上如果不指定則最後乙個數字預設的步長為1,s[1:-1:1]」與「s[1:-1]」的結果是一致的。當然步長也可以是負數,聰明的讀者肯定一下子就會明白我的用意:
>>> s[::-1]
'gfedcba'
這裡在步長為–1時左右顛倒了這個字串。而且當選取整個序列時,起始和終止索引可以省略,只留下兩個冒號即可。所以在python中分片的完整表示式如下:
s[start:end:step]
當指定的索引超出了字串的長度時,我們就會得到乙個異常:
>>> s[-11]
traceback (most recent call last):
file "", line 1, in indexerror: string index out of range
python的異常是從上向下閱讀,最後一行「indexerror」代表錯誤的型別,「file」開始的這一行中「line 1」代表出錯程式在檔案中的行號,這些資訊有助於我們找到程式出錯的位置,後續的章節會有專門介紹異常處理的內容。
最後,對於乙個字串,要知道如何確定其長度,**如下:
>>> len(s)
7
這很容易,「len()」是乙個內建的函式,可以獲取任意序列型別物件的長度,在這裡s字串擁有7個字元。 python資料科學實踐指南
python io讀寫外部資料 資料科學的第三方庫 python圖資料分析庫 大資料工具 1.資料科學的過程分為 資料採集 資料清洗 資料處理和資料查詢與視覺化。2.資料科學需要的技能 python程式語言 演算法 資料庫 作業系統 概率與統計 線性代數和英語。3.程式設計學習 codecademy...
Python 資料科學指南 1 5使用集合
集合 不能存在重複值,是無序的同類元素的集合,通常情況下,集合被用來刪除列表中的重複值。操作 集合支援交集 並集 差集和對稱差等操作。encoding utf 8 1.初始化兩個句子 st 1 dogs chase cats st 2 dogs hate cats 2.從字串中建立詞的集合,st 1...
Docker 實踐指南(2)
這節介紹安裝方法及加速器的使用 需要注意的是 目前 docker 不支援32位的cpu 推薦使用linux 3.8或更高版本核心 接下來我使用 ubuntu 及centos 兩個常見發行版本作介紹安裝方法 我選用的是 ubuntu 14.04 lts版本。為減少學習困難起見,建議大家先使用此版本 1...