【無為則無心&Python基礎(chǔ)】— 25.Python序列--字符串(一)

序列的概念

序列sequence是python中最基本的數(shù)據(jù)結(jié)構(gòu)呛凶。指的是一塊可存放多個(gè)值的連續(xù)內(nèi)存空間行贪,這些值按一定順序排列,可通過每個(gè)值所在位置的編號(稱為索引)訪問它們崭捍。

為了更形象的認(rèn)識序列啰脚,可以將它看做是一家旅店,那么店中的每個(gè)房間就如同序列存儲數(shù)據(jù)的一個(gè)個(gè)內(nèi)存空間粒梦,每個(gè)房間所特有的房間號就相當(dāng)于索引值。也就是說缴淋,通過房間號(索引)我們可以找到這家旅店(序列)中的每個(gè)房間(內(nèi)存空間)昼蛀。

在Python中,常用的序列類型包括字符串、列表夫植、元組油讯、集合和字典。

一陌兑、字符串

之前我們說Python中不可變數(shù)據(jù)類型的時(shí)候已經(jīng)介紹過字符串的一些基礎(chǔ)用法沈跨,忘記的可以查看文檔2的四-6。

下面我們說說字符串的更高級一些的用法兔综。

(一)下標(biāo)

1饿凛、概念

“下標(biāo)”又叫“索引”,就是編號软驰。比如火車的座位號涧窒,座位號的作用:按照編號快速找到對應(yīng)的座位。同理锭亏,下標(biāo)的作用即是通過下標(biāo)快速找到數(shù)據(jù)中對應(yīng)位置的字符纠吴。

所以字符串實(shí)際上就是字符的數(shù)組,如果想使用字符串中某個(gè)特定的數(shù)據(jù)慧瘤,那么可以通過下標(biāo)的方法取得戴已。換句話說字符串?dāng)?shù)據(jù)的下標(biāo)從0開始順序分配一個(gè)編號锅减,使用這個(gè)編號精確找到某個(gè)字符數(shù)據(jù)糖儡。

注意:下標(biāo)從0開始,向后遞增上煤。

image.png

2休玩、快速體驗(yàn)

需求:字符串name = "abcdef",取到不同下標(biāo)對應(yīng)的數(shù)據(jù)。

name = "abcdef"
# 下標(biāo)得到的是下標(biāo)為某個(gè)數(shù)字所對應(yīng)的數(shù)據(jù)
print(name[1])
print(name[0])
print(name[2])

"""
輸出結(jié)果
b
a
c
"""

3拴疤、字符串取值的兩種方式

在Python的字符串取值中永部,有兩種取值方式,即正負(fù)取值呐矾。

  • 正向下標(biāo)從0開始苔埋,下標(biāo)值依次遞增。
  • 負(fù)向下標(biāo)從-1開始蜒犯,下標(biāo)值依次遞減组橄。

如下圖:

練習(xí):

name = "abcdef"

print(name[-1])
print(name[-4])
print(name[-2])

"""
輸出結(jié)果
f
c
e
"""

(二)切片

切片是指對操作的對象截取其中一部分的操作。字符串罚随、列表玉工、元組都支持切片操作。

1淘菩、語法

序列[開始位置下標(biāo):結(jié)束位置下標(biāo):步長]

注意

  • 不包含結(jié)束位置下標(biāo)對應(yīng)的數(shù)據(jù)(截取的規(guī)則為“前閉后開”)遵班, 正負(fù)整數(shù)均可;
  • 步長表示潮改,每次獲取元素的間隔狭郑,默認(rèn)步長為1。(可省略不寫)
    步長正負(fù)整數(shù)均可汇在,不能是0翰萨,設(shè)置0會直接異常。
  • 做切片操作時(shí)糕殉,總會返回一個(gè)新的列表(字符串亩鬼,元祖),不會影響原來的列表(字符串糙麦,元祖)辛孵。
  • 一般創(chuàng)建列表時(shí),變量的名字會使用復(fù)數(shù)赡磅。(我們直接輸出魄缚,就不定義變量名了)

2、體驗(yàn)

# 序列名[開始位置的下標(biāo):結(jié)束位置的下標(biāo):步長]

# 我定義的一個(gè)字符串就是從0開始的數(shù)字
# 對應(yīng)著字符串的腳標(biāo)焚廊,方便我們直觀的查看結(jié)果冶匹。
str1 = '012345678'

# 1.規(guī)范截取,可觀察前閉后開
print(str1[2:5:1])  # 234

# 2.驗(yàn)證步長咆瘟,為隔幾個(gè)字符曲一次值
print(str1[2:5:2])  # 24

# 3.可以不寫步長嚼隘,默認(rèn)為1
print(str1[2:5])  # 234

# 4.如果不寫開始,默認(rèn)從0開始選取
print(str1[:5])  # 01234 

# 5.如果不寫結(jié)束袒餐,表示從某位置開始飞蛹,選取到最后谤狡。
print(str1[2:])  # 2345678 

# 6.如果不寫開始和結(jié)束,表示選取所有卧檐。
# 其實(shí)相當(dāng)于創(chuàng)建了一個(gè)字符串的副本
print(str1[:])  # 012345678 

# 負(fù)數(shù)測試
# 1.如果步長為負(fù)數(shù)墓懂,表示倒敘選取
print(str1[::-1])  # 876543210 

# 2.下標(biāo)-1表示最后一個(gè)數(shù)據(jù),下標(biāo)數(shù)值向前依次遞減霉囚。
# 如下:從倒數(shù)第4位到倒數(shù)第1位捕仔,正向截取,前閉后開盈罐。
print(str1[-4:-1])  # 567 

"""
 3.終極測試
 從倒數(shù)第4位到倒數(shù)第1位榜跌,從左向右,
 正向截取盅粪,前閉后開钓葫。
 但是-1步長:是從右向左選取。
 兩個(gè)選取方向相反票顾,所以不能選取出數(shù)據(jù)
"""
print(str1[-4:-1:-1])  # 沒有結(jié)果

# 如下修改瓤逼,從最后1位截取到倒數(shù)第4位
# 方向是從后向前,也就是從右到左库物,
# 步長-1的方向,也是從從右到左贷帮。
# 所以可以取到值戚揭。
print(str1[-1:-4:-1])  # 876

"""
重點(diǎn):****
     如果選取方向(下標(biāo)開始到結(jié)束的方向) 和
     步長的方向沖突,
     則無法選取數(shù)據(jù)撵枢。
"""

總結(jié):
這種語法很有用民晒,因?yàn)槟憬?jīng)常需要在不知道列表長度的情況下訪問最后的元素。這種約定也適用于其他負(fù)數(shù)索引锄禽,例如潜必,索引-2返回倒數(shù)第二個(gè)列表元素,索引-3返回倒數(shù)第三個(gè)列表元素沃但,以此類推 磁滚。

體驗(yàn)補(bǔ)充:

# 1.做切片操作時(shí),總會返回一個(gè)新的列表宵晚,不會影響原來的列表垂攘。
stus = ['孫悟空','豬八戒','沙和尚','唐僧','蜘蛛精','白骨精']
new_stus = stus[0 :3]
print(stus)
print(new_stus)

"""
輸出結(jié)果:
['孫悟空', '豬八戒', '沙和尚', '唐僧', '蜘蛛精', '白骨精']
['孫悟空', '豬八戒', '沙和尚']
"""

# 步長不能設(shè)置為0
# 結(jié)果:ValueError: slice step cannot be zero
print(stus[0 :3 : 0]) # 異常

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市淤刃,隨后出現(xiàn)的幾起案子晒他,更是在濱河造成了極大的恐慌,老刑警劉巖逸贾,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陨仅,死亡現(xiàn)場離奇詭異津滞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)灼伤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門触徐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饺蔑,你說我怎么就攤上這事锌介。” “怎么了猾警?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵孔祸,是天一觀的道長。 經(jīng)常有香客問我发皿,道長崔慧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任穴墅,我火速辦了婚禮惶室,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘玄货。我一直安慰自己皇钞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布松捉。 她就那樣靜靜地躺著夹界,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隘世。 梳的紋絲不亂的頭發(fā)上可柿,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音丙者,去河邊找鬼复斥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛械媒,可吹牛的內(nèi)容都是我干的目锭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滥沫,長吁一口氣:“原來是場噩夢啊……” “哼侣集!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起兰绣,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤世分,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缀辩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臭埋,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡踪央,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓢阴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畅蹂。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖荣恐,靈堂內(nèi)的尸體忽然破棺而出液斜,到底是詐尸還是另有隱情,我是刑警寧澤叠穆,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布少漆,位于F島的核電站,受9級特大地震影響硼被,放射性物質(zhì)發(fā)生泄漏示损。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一嚷硫、第九天 我趴在偏房一處隱蔽的房頂上張望检访。 院中可真熱鬧,春花似錦仔掸、人聲如沸脆贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丹禀。三九已至,卻和暖如春鞋怀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背持搜。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工密似, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葫盼。 一個(gè)月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓残腌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贫导。 傳聞我的和親對象是個(gè)殘疾皇子抛猫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355