摘要:序列是中的重要數據結構,序列包括字符串,列表,元組。序列支持運算符嗎運算符是否支持算數運算符支持加法與乘法操作,返回新的序列比較運算符支持,返回與邏輯運算符支持注意必須是同種類型數據結構操作才有意義。
序列是Python中的重要數據結構,序列包括字符串,列表,元組。
大部分朋友學習Python的時候都會找本書或者資料從頭看到尾,這次我們換一個思路,問答式的方式,可能讓我們精力更集中,下面開始我們的提問:
序列是將元素按照順序排列,通過索引(下標)訪問;2.能直觀描述下嗎?
字符串、列表、元組都屬于序列。
直接上圖:
序列中的每個元素按順序排列,使用索引進行訪問,索引分為正負索引;
3.具體如何訪問,正負索引是不是有點多余?舉一個栗子,字符串:msg ="helloworld",在jupyter下操作如下:
msg = "helloworld" #獲取第一個元素 print(msg[0]) #獲取最后一個? print(msg[-1]) #獲取第3個元素 print(msg[2]) #獲取第12個元素 print(msg[11])
輸出結果:
h d l --------------------------------------------------------------------------- IndexError Traceback (most recent call last)in () 7 print(msg[2]) 8 #獲取第12個元素 ----> 9 print(msg[11]) IndexError: string index out of range
誒呀我去,怎么出了這么個玩意?一般大家看到這種錯誤,莫名的頭疼,這時候我們會問:
4.訪問第一個元素索引為什么是0?序列的索引從0開始,所以我們訪問第一個元素對應索引為0,那么我們訪問第二個索引就是2-1,訪問第N個元素,索引就是N-1;5.為什么會出錯,這是什么情況?
換個說法,如果訪問第0個元素,索引就是0了;
訪問索引超過了序列長度就會報錯,因為訪問的元素不存在。6.怎么看這個錯誤?
Python中出錯后,會將出錯行,出錯信息提示出來,給了我們足夠信息去解決問題,具體意思如下:
下次看到這種錯誤就查下序列長度與索引值。
7.我想遍歷整個序列,難道要msg[1],msg[2]...msg[n]么?如果你想,這種方式也是可以的;
但是我們一般使用for循環,代碼如下:
print(msg) #for 遍歷序列,依次去msg中的每個元素, #并賦值給val for val in msg: print(val)8.for循環為什么不會出錯?
for 循環內部做了異常處理,所以不會出錯,我們直接使用就可以。9.切片操作是怎么回事?
切片是Python中的操作符,類似函數操作,使用方式如下:
sequence[start:stop]:start為起始索引,stop為結束索引,10.如何使用切片操作?結果為:獲取索引start到stop-1元素,返回新的序列;
start默認為0,stop默認到最后;sequence[start:stop:step]:與上類似,step為步進值,默認為1;
舉個例子,msg = "hellowolrd",jupyter下操作如下:
msg = "helloworld" #索引從0開始算 #獲取索引2到4之間元素? print(msg[2:5]) #stop -1 #獲取索引0到7之間元素? print(msg[0:8]) #獲取索引5之后所有元素? print(msg[5:11]) #stop -1 print(msg[5:]) #默認到最后 print(msg[5:100])#會不會報錯,為什么?
輸出結果:
llo hellowor world world world11.切片操作有高級使用方式么?
沒有高不高級,看如何使用;
同樣一塊面,你做成饅頭他就2元,你做成蛋糕他就有一萬種可能。
理解知識點:序列有兩種索引:正索引,負索引;
切片操作三個值:start,stop,step,step為步進值,可以為-1;
先提出問題,然后自己嘗試去實現,可以把答案寫在品論區,再繼續閱讀:
1>索引倒數第3個之后所有元素,
2>索引從0到結束,隔一個取一個,
3>索引倒數第二個開始,向前隔一個取一個元素,
4>切片操作實現倒序,
到這里,應該在自己環境下嘗試練習了,我這邊繼續,具體實現如下:
msg = "helloworld" #獲取索引倒數第二個元素之后所有元素 print(msg[-2:]) #獲取索引從0到結束,隔一個取一個元素 #理解為,start為0,stop到最后,step為2的切片操作 print(msg[::2]) #倒數第二個開始,向前隔一個取一個元素 #理解為:start為-2,stop到最前,step為-2的切片操作 print(msg[-2::-2]) #切片操作實現倒序? print(msg[::-1])
輸出結果:
ld hlool loolh dlrowolleh
這些搞定了,我們就基本掌握切片操作了。
12.序列支持運算符嗎?運算符 | 是否支持 |
---|---|
算數運算符 | 支持加法與乘法操作,返回新的序列 |
比較運算符 | 支持,返回True與False |
邏輯運算符 | 支持 |
注意:必須是同種類型數據結構操作才有意義。
13.我想要拼接字符串,如何操作?直接使用加法操作,如下:
wd1 = "hello" wd2 = "world" print(wd1 + wd2) print(wd1 * 2)
輸出結果:
helloworld hellohello14.取序列長度?
使用len方法:
msg = "helloworld" print(len(msg))
輸出結果:10
15.能否通過索引遍歷序列?能,使用range方法,生成索引,然后使用for循環遍歷:
msg = "helloworld" #獲取長度,生成range對象 #使用for遍歷range獲取索引 #通過索引訪問元素 for index in range(len(msg)): print(msg[index])16.能否再遍歷的時候獲取索引與元素?
需要使用enumerate:enumerate(iterable[, start])
參數:iterable:可迭代對象,start:可選參數,指定起始位置;
返回:索引與value對應的enumerate對象;
可以使用for循環進行遍歷,具體使用如下:
msg = "helloworld" #創建enumerate對象 items = enumerate(msg) #遍歷enumerate對象 for item in items: print(item)
輸出結果:
(0, "h") (1, "e") (2, "l") (3, "l") (4, "o") (5, "w") (6, "o") (7, "r") (8, "l") (9, "d")17.還沒真正獲取索引,這個索引和元素在一起如何處理?
是否還記得多元賦值:x,y = 1,2
第一種方式:
msg = "helloworld" for item in enumerate(msg): index, value = item print(index, value)
第二種方式:
msg = "helloworld" for tindex, tvalue in enumerate(msg): print(tindex, tvalue)
第一種容易理解,第二種怎么回事?
for循環迭代的時候,首先從 enumerate取元素,而 enumerate的每個元素都是(index, values),我們這里加了兩個變量tindex, tvalue去接受值,相當于多元賦值。
使用操作符:in與not in
in:元素是否在序列中,在返回True,否則返回False,例如:"a" in "abc";
not in:與in相反;
實際操作如下:
#加法與乘法: msg = "helloworld*" #元素是否在序列中 print("w in msg:", "w" in msg) print("a in msg:", "a" in msg) print("a not in msg:","a" not in msg)
輸出結果:
w in msg: True a in msg: False a not in msg: True
好了,到這里我們對序列基本知識點就有了一定認識。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43939.html
摘要:它是一門解析型的語言,何為解析型語言呢就是在運行時通過解析器將源代碼一行行解析成機器碼。而像語言,等則是編譯型的語言,即通過編譯器將所有的源代碼一次性編譯成二進制指令,生成一個可執行的程序。 ...
摘要:本題目的考察點在于函數的格式輸出規則。方法改變隨機數生成器的種子,可以在調用其他隨機模塊函數之前調用此函數。參數改變隨機數生成器的種子。返回一個至區間包含和的整數。 ...
摘要:因此,當任何由返回的函數被調用時,的值將在附近的范圍進行查找。下面是解決這一問題的一些方法。另外一個解決方案就是創造一個閉包,利用默認函數立即綁定。當缺失時,執行類,字典的實例將自動實例化這個數列。 1、下面這段代碼的輸出結果是什么?請解釋。 def extendList(val, list=[]): list.append(val) return list list...
摘要:貢獻者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻者:飛龍版...
閱讀 3054·2023-04-26 00:40
閱讀 2391·2021-09-27 13:47
閱讀 4197·2021-09-07 10:22
閱讀 2966·2021-09-06 15:02
閱讀 3307·2021-09-04 16:45
閱讀 2484·2021-08-11 10:23
閱讀 3599·2021-07-26 23:38
閱讀 2900·2019-08-30 15:54