成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

十八問,認(rèn)識(shí)Python序列,解決疑難雜癥!

cjie / 1671人閱讀

摘要:序列是中的重要數(shù)據(jù)結(jié)構(gòu),序列包括字符串,列表,元組。序列支持運(yùn)算符嗎運(yùn)算符是否支持算數(shù)運(yùn)算符支持加法與乘法操作,返回新的序列比較運(yùn)算符支持,返回與邏輯運(yùn)算符支持注意必須是同種類型數(shù)據(jù)結(jié)構(gòu)操作才有意義。

序列是Python中的重要數(shù)據(jù)結(jié)構(gòu),序列包括字符串,列表,元組。
大部分朋友學(xué)習(xí)Python的時(shí)候都會(huì)找本書或者資料從頭看到尾,這次我們換一個(gè)思路,問答式的方式,可能讓我們精力更集中,下面開始我們的提問:

1.什么是序列?
序列是將元素按照順序排列,通過索引(下標(biāo))訪問;
字符串、列表、元組都屬于序列。
2.能直觀描述下嗎?

直接上圖:

序列中的每個(gè)元素按順序排列,使用索引進(jìn)行訪問,索引分為正負(fù)索引;

3.具體如何訪問,正負(fù)索引是不是有點(diǎn)多余?

舉一個(gè)栗子,字符串:msg ="helloworld",在jupyter下操作如下:

msg = "helloworld"
#獲取第一個(gè)元素
print(msg[0])
#獲取最后一個(gè)?
print(msg[-1])
#獲取第3個(gè)元素
print(msg[2])
#獲取第12個(gè)元素
print(msg[11])

輸出結(jié)果:

h d l
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
 in ()
      7 print(msg[2])
      8 #獲取第12個(gè)元素
----> 9 print(msg[11])

IndexError: string index out of range

誒呀我去,怎么出了這么個(gè)玩意?一般大家看到這種錯(cuò)誤,莫名的頭疼,這時(shí)候我們會(huì)問:

4.訪問第一個(gè)元素索引為什么是0?
序列的索引從0開始,所以我們?cè)L問第一個(gè)元素對(duì)應(yīng)索引為0,那么我們?cè)L問第二個(gè)索引就是2-1,訪問第N個(gè)元素,索引就是N-1;
換個(gè)說法,如果訪問第0個(gè)元素,索引就是0了;
5.為什么會(huì)出錯(cuò),這是什么情況?
訪問索引超過了序列長(zhǎng)度就會(huì)報(bào)錯(cuò),因?yàn)樵L問的元素不存在。
6.怎么看這個(gè)錯(cuò)誤?
Python中出錯(cuò)后,會(huì)將出錯(cuò)行,出錯(cuò)信息提示出來(lái),給了我們足夠信息去解決問題,具體意思如下:

下次看到這種錯(cuò)誤就查下序列長(zhǎng)度與索引值。

7.我想遍歷整個(gè)序列,難道要msg[1],msg[2]...msg[n]么?

如果你想,這種方式也是可以的;
但是我們一般使用for循環(huán),代碼如下:

print(msg)
#for 遍歷序列,依次去msg中的每個(gè)元素,
#并賦值給val
for val in msg:
    print(val)
8.for循環(huán)為什么不會(huì)出錯(cuò)?
for 循環(huán)內(nèi)部做了異常處理,所以不會(huì)出錯(cuò),我們直接使用就可以。
9.切片操作是怎么回事?

切片是Python中的操作符,類似函數(shù)操作,使用方式如下:

sequence[start:stop]:start為起始索引,stop為結(jié)束索引,

結(jié)果為:獲取索引start到stop-1元素,返回新的序列;
start默認(rèn)為0,stop默認(rèn)到最后;

sequence[start:stop:step]:與上類似,step為步進(jìn)值,默認(rèn)為1;

10.如何使用切片操作?

舉個(gè)例子,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:])   #默認(rèn)到最后
print(msg[5:100])#會(huì)不會(huì)報(bào)錯(cuò),為什么?

輸出結(jié)果:

llo
hellowor
world
world
world
11.切片操作有高級(jí)使用方式么?

沒有高不高級(jí),看如何使用;
同樣一塊面,你做成饅頭他就2元,你做成蛋糕他就有一萬(wàn)種可能。

理解知識(shí)點(diǎn):序列有兩種索引:正索引,負(fù)索引;
切片操作三個(gè)值:start,stop,step,step為步進(jìn)值,可以為-1;

先提出問題,然后自己嘗試去實(shí)現(xiàn),可以把答案寫在品論區(qū),再繼續(xù)閱讀:

1>索引倒數(shù)第3個(gè)之后所有元素,
2>索引從0到結(jié)束,隔一個(gè)取一個(gè),
3>索引倒數(shù)第二個(gè)開始,向前隔一個(gè)取一個(gè)元素,
4>切片操作實(shí)現(xiàn)倒序,

到這里,應(yīng)該在自己環(huán)境下嘗試練習(xí)了,我這邊繼續(xù),具體實(shí)現(xiàn)如下:

msg = "helloworld"
#獲取索引倒數(shù)第二個(gè)元素之后所有元素
print(msg[-2:])
#獲取索引從0到結(jié)束,隔一個(gè)取一個(gè)元素
#理解為,start為0,stop到最后,step為2的切片操作
print(msg[::2])
#倒數(shù)第二個(gè)開始,向前隔一個(gè)取一個(gè)元素
#理解為:start為-2,stop到最前,step為-2的切片操作
print(msg[-2::-2])
#切片操作實(shí)現(xiàn)倒序?
print(msg[::-1])

輸出結(jié)果:

ld
hlool
loolh
dlrowolleh

這些搞定了,我們就基本掌握切片操作了。

12.序列支持運(yùn)算符嗎?
運(yùn)算符 是否支持
算數(shù)運(yùn)算符 支持加法與乘法操作,返回新的序列
比較運(yùn)算符 支持,返回True與False
邏輯運(yùn)算符 支持

注意:必須是同種類型數(shù)據(jù)結(jié)構(gòu)操作才有意義。

13.我想要拼接字符串,如何操作?

直接使用加法操作,如下:

wd1 = "hello"
wd2 = "world"
print(wd1 + wd2)
print(wd1 * 2)

輸出結(jié)果:

helloworld
hellohello
14.取序列長(zhǎng)度?

使用len方法:

msg = "helloworld"
print(len(msg))

輸出結(jié)果:10

15.能否通過索引遍歷序列?

能,使用range方法,生成索引,然后使用for循環(huán)遍歷:

msg = "helloworld"
#獲取長(zhǎng)度,生成range對(duì)象
#使用for遍歷range獲取索引
#通過索引訪問元素
for index in range(len(msg)):
    print(msg[index])
16.能否再遍歷的時(shí)候獲取索引與元素?

需要使用enumerate:enumerate(iterable[, start])
參數(shù):iterable:可迭代對(duì)象,start:可選參數(shù),指定起始位置;
返回:索引與value對(duì)應(yīng)的enumerate對(duì)象;
可以使用for循環(huán)進(jìn)行遍歷,具體使用如下:

msg = "helloworld"
#創(chuàng)建enumerate對(duì)象
items = enumerate(msg)
#遍歷enumerate對(duì)象
for item in items:
    print(item)

輸出結(jié)果:

(0, "h")
(1, "e")
(2, "l")
(3, "l")
(4, "o")
(5, "w")
(6, "o")
(7, "r")
(8, "l")
(9, "d")
17.還沒真正獲取索引,這個(gè)索引和元素在一起如何處理?

是否還記得多元賦值: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循環(huán)迭代的時(shí)候,首先從 enumerate取元素,而 enumerate的每個(gè)元素都是(index, values),我們這里加了兩個(gè)變量tindex, tvalue去接受值,相當(dāng)于多元賦值。

18.判斷元素是否存再序列中存在?

使用操作符:in與not in
in:元素是否在序列中,在返回True,否則返回False,例如:"a" in "abc";
not in:與in相反;

實(shí)際操作如下:

#加法與乘法:
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)

輸出結(jié)果:

w in msg: True
a in msg: False
a not in msg: True

好了,到這里我們對(duì)序列基本知識(shí)點(diǎn)就有了一定認(rèn)識(shí)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/43939.html

相關(guān)文章

  • Python從入門到精通】五萬(wàn)六千字對(duì)Python基礎(chǔ)知識(shí)做一個(gè)了結(jié)吧!(二十八)【值得收藏】

    摘要:它是一門解析型的語(yǔ)言,何為解析型語(yǔ)言呢就是在運(yùn)行時(shí)通過解析器將源代碼一行行解析成機(jī)器碼。而像語(yǔ)言,等則是編譯型的語(yǔ)言,即通過編譯器將所有的源代碼一次性編譯成二進(jìn)制指令,生成一個(gè)可執(zhí)行的程序。 ...

    leeon 評(píng)論0 收藏0
  • 全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python(2021年9月)備考筆記 第十二天

    摘要:本題目的考察點(diǎn)在于函數(shù)的格式輸出規(guī)則。方法改變隨機(jī)數(shù)生成器的種子,可以在調(diào)用其他隨機(jī)模塊函數(shù)之前調(diào)用此函數(shù)。參數(shù)改變隨機(jī)數(shù)生成器的種子。返回一個(gè)至區(qū)間包含和的整數(shù)。 ...

    Codeing_ls 評(píng)論0 收藏0
  • [譯]Python面試中8個(gè)必考問題

    摘要:因此,當(dāng)任何由返回的函數(shù)被調(diào)用時(shí),的值將在附近的范圍進(jìn)行查找。下面是解決這一問題的一些方法。另外一個(gè)解決方案就是創(chuàng)造一個(gè)閉包,利用默認(rèn)函數(shù)立即綁定。當(dāng)缺失時(shí),執(zhí)行類,字典的實(shí)例將自動(dòng)實(shí)例化這個(gè)數(shù)列。 1、下面這段代碼的輸出結(jié)果是什么?請(qǐng)解釋。 def extendList(val, list=[]): list.append(val) return list list...

    warmcheng 評(píng)論0 收藏0
  • ApacheCN 人工智能知識(shí)樹 v1.0

    摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長(zhǎng)時(shí)間,如果你一本書一本書看的話,的確要用很長(zhǎng)時(shí)間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識(shí)點(diǎn)合并,手動(dòng)整理了這個(gè)知識(shí)樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...

    劉厚水 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<