Python系列教程35

2021-10-13 07:16:55 字數 2574 閱讀 6126

宣告:在人工智慧技術教學期間,不少學生向我提一些python相關的問題,所以為了讓同學們掌握更多擴充套件知識更好的理解人工智慧技術,我讓助理負責分享這套python系列教程,希望能幫到大家!由於這套python教程不是要由所寫,所以不如我的人工智慧技術教學風趣幽默,學起來比較枯燥;但它的知識點還是講到位的了,也值得閱讀!

本篇文章我們來開始講解一下字串。

就像任意字元的集合一樣,字串是用來記錄文字資訊的。它們是在python中作為序列提到的第乙個例子。序列是乙個包含了其他物件的有序集合。序列中的元素包含了乙個從左到右的順序——序列中的元素根據它們的相對位置進行儲存和讀取。從嚴格意義上來說,字串是單個字元組成的序列,其他型別的序列還包括列表和元組。

作為序列,字串其中各個元素是有固定位置順序的。也就是說可以通過位置來獲取或操作某個元素。例如,如果我們有乙個含有四個字元的字串,我們可以通過內建的len函式驗證其長度並通過索引操作得到其各個元素。

.>>> s = 『spam』

.>>> len(s) # length

.>>> s[0] # the first item in s,indexing by zero-based position

『s』.>>> s[1] # the second item from the left

『p』在python中,索引是按照從最前面的偏移量進行編碼的,也就是從0開始,第一項元素的索引為0,第二項索引為1,依此類推。

注意我們在這裡是直接把字串賦給乙個名為s的變數的——因為python變數不需要提前宣告。在python中,當給乙個變數賦值的時候就建立了它,可能賦的是任何型別的物件,並且當變數出現在乙個表示式中的時候,就會用其值替換它。

在python中,我們還能夠反向索引,從最後乙個開始(正向索引是從左邊開始計算,反向索引是從右邊開始計算)。

.>>> s[-1] # the last item from the end in s

『m』.>>> s[-2] # the second to last item from the end

『a』一般來說,負的索引號會簡單地與字串的長度相加,因此,以下兩個操作是等效的(儘管第乙個要更容易編寫並不容易發生錯誤):

.>>> s[-1] # the last item in s

『m』.>>> s[len(s)-1] # negative indexing,the hard way

『m』值得注意的是,我們能夠在方括號中使用任意表示式,而不僅僅是使用數字常量——我們可以使用乙個常量、乙個變數或任意表示式。

除了簡單地從位置進行索引,序列也支援一種所謂分片(slice)的操作,這是一種一步就能夠提取整個分片(slice)的方法。例如:

.>>> s # a 4-character string

『spam』

.>>> s[1:3] # slice of s from offsets 1 through 2 (not 3)

『pa』

也許認識分片的最簡單的辦法就是把它們看做是從乙個字串中一步就提取出一部分的方法。它們的一般形式為x[i:j],表示「取出在x中從偏移量為i,直到但不包括偏移量為j的內容」。結果就是返回乙個新的物件。例如,上邊的最後乙個操作,是在字串s中將從偏移1到2的所有字元取出作為乙個新的字串返回。效果就是切片或「分離出」中間的兩個字元。

在乙個分片中,左邊界預設為0,並且右邊界預設為分片序列的長度。下面是一些有趣的用法:

.>>> s[1:] # everything past the first (1:len(s))

『pam』

.>>> s # s itself hasn』t changed

『spam』

.>>> s[0:3] # everything but the last

『spa』

.>>> s[:3] # same as s[0:3]

『spa』

.>>> s[:-1] # everything but the last again,but ******r (0:-1)

『spa』

.>>> s[:] # all of s as a top-level copy (0:len(s))

『spam』

作為乙個序列,字串也支援使用加號進行合併(將兩個字串合成為乙個新的字串),或者重複(通過再重複一次建立乙個新的字串):

.>>> s

spam』

.>>> s + 『xyz』 # concatenation

『spamxyz』

.>>> s # s is unchanged

『spam』

.>>> s * 8 # repetition

『spamspamspamspamspamspamspamspam』

注意加號(+)對於不同的物件有不同的意義:對於數字為加法,對於字串為合併。這是python的一般特性,也就是我們將會在後面學到的多型。簡而言之,乙個操作的意義取決於被操作的物件。正如將在學習動態型別時看到的那樣,這種多型的特性給python**帶來了很大的簡潔性和靈活性。由於型別並不受約束,python編寫的操作通常可以自動地適用於不同型別的物件。

python系列教程 python系列教程

宣告 在人工智慧技術教學期間,不少學生向我提一些python相關的問題,所以為了讓同學們掌握更多擴充套件知識更好的理解人工智慧技術,我讓助理負責分享這套python系列教程,希望能幫到大家!由於這套python教程不是要由所寫,所以不如我的人工智慧技術教學風趣幽默,學起來比較枯燥 但它的知識點還是講...

python系列教程3

python唯一的缺點就是,在目前現有的實現方式下,與c和c 這類編譯語言相比,python的執行速度還不夠快。教程後面將對實現方式的概念進行詳細闡述。簡而言之,目前python的標準實現方式是將源 的語句編譯 或者說是轉換 為位元組碼的形式,之後再將位元組碼解發布來。由於位元組碼是一種與平台無關的...

Python系列教程19

開啟文字編輯器 例如,vi notepad或idle編輯器 並在命名為script1.py的新文字檔案中輸入如下python語句 a first python script import sys load a library module print sys.platform print 2 100...