day05.字符串/列表/元組/字典【Python教程】

day05.字符串/列表/元組/字典【Python教程】

一芝加、字符串介紹

想一想:

當打來瀏覽器登錄某些網(wǎng)站的時候硅卢,需要輸入密碼,瀏覽器把密碼傳送到服務器后藏杖,服務器會對密碼進行驗證将塑,其驗證過程是把之前保存的密碼與本次傳遞過去的密碼進行對比,如果相等蝌麸,那么就認為密碼正確点寥,否則就認為不對;服務器既然想要存儲這些密碼可以用數(shù)據(jù)庫(比如MySQL)来吩,當然為了簡單起見敢辩,咱們可以先找個變量把密碼存儲起來即可蔽莱;那么怎樣存儲帶有字母的密碼呢?

答:

字符串

<1>python中字符串的格式

如下定義的變量a戚长,存儲的是數(shù)字類型的值

如下定義的變量b盗冷,存儲的是字符串類型的值

小總結:

雙引號或者單引號中的數(shù)據(jù),就是字符串

二同廉、字符串輸出

demo

結果:

三仪糖、字符串輸入

之前在學習input的時候,通過它能夠完成從鍵盤獲取數(shù)據(jù)迫肖,然后保存到指定的變量中锅劝;

注意:input獲取的數(shù)據(jù),都以字符串的方式進行保存咒程,即使輸入的是數(shù)字鸠天,那么也是以字符串方式保存

demo:

結果:(根據(jù)輸入的不同結果也不同)

運行結果

四、下標和切片

1. 下標索引

所謂“下標”帐姻,就是編號稠集,就好比超市中的存儲柜的編號,通過這個編號就能找到相應的存儲空間

生活中的 "下標"

超市儲物柜

高鐵二等座

高鐵一等座

綠皮車

字符串中"下標"的使用

列表與元組支持下標索引好理解饥瓷,字符串實際上就是字符的數(shù)組剥纷,所以也支持下標索引。

如果有字符串:name = 'abcdef'呢铆,在內(nèi)存中的實際存儲如下:

如果想取出部分字符晦鞋,那么可以通過下標的方法,(注意python中下標從 0 開始)

運行結果:?

2. 切片

切片是指對操作的對象截取其中一部分的操作棺克。字符串悠垛、列表、元組都支持切片操作娜谊。

切片的語法:[起始:結束:步長]

注意:選取的區(qū)間屬于左閉右開型确买,即從"起始"位開始,到"結束"位的前一位結束(不包含結束位本身)纱皆。

我們以字符串為例講解湾趾。

如果取出一部分,則可以在中括號[]中派草,使用:

運行結果:

運行結果:

運行結果:

運行結果:

運行結果:

想一想

(面試題)給定一個字符串a(chǎn)Str, 請反轉字符串

五搀缠、字符串常見操作

如有字符串mystr = 'hello world itcast and itcastcpp',以下是常見的操作

<1>find

檢測 str 是否包含在 mystr中近迁,如果是返回開始的索引值艺普,否則返回-1

<2>index

跟find()方法一樣,只不過如果str不在 mystr中會報一個異常.

<3>count

返回 str在start和end之間 在 mystr里面出現(xiàn)的次數(shù)

<4>replace

把 mystr 中的 str1 替換成 str2,如果 count 指定,則替換不超過 count 次.

<5>split

以 str 為分隔符切片 mystr衷敌,如果 maxsplit有指定值勿侯,則僅分隔 maxsplit 個子字符串

<6>capitalize

把字符串的第一個字符大寫

<7>title

把字符串的每個單詞首字母大寫

<8>startswith

檢查字符串是否是以 obj 開頭, 是則返回 True,否則返回 False

<9>endswith

檢查字符串是否以obj結束缴罗,如果是返回True,否則返回 False.

<10>lower

轉換 mystr 中所有大寫字符為小寫

<11>upper

轉換 mystr 中的小寫字母為大寫

<12>ljust

返回一個原字符串左對齊,并使用空格填充至長度 width 的新字符串

<13>rjust

返回一個原字符串右對齊,并使用空格填充至長度 width 的新字符串

<14>center

返回一個原字符串居中,并使用空格填充至長度 width 的新字符串

<15>lstrip

刪除 mystr 左邊的空白字符

<16>rstrip

刪除 mystr 字符串末尾的空白字符

<17>strip

刪除mystr字符串兩端的空白字符

<18>rfind

類似于 find()函數(shù)助琐,不過是從右邊開始查找.

<19>rindex

類似于 index(),不過是從右邊開始.

<20>partition

把mystr以str分割成三部分,str前面氓,str和str后

<21>rpartition

類似于 partition()函數(shù),不過是從右邊開始.

<22>splitlines

按照行分隔兵钮,返回一個包含各行作為元素的列表

<23>isalpha

如果 mystr 所有字符都是字母 則返回 True,否則返回 False

<24>isdigit

如果 mystr 只包含數(shù)字則返回 True 否則返回 False.

<25>isalnum

如果 mystr 所有字符都是字母或數(shù)字則返回 True,否則返回 False

<26>isspace

如果 mystr 中只包含空格,則返回 True舌界,否則返回 False.

<27>join

mystr 中每個字符后面插入str,構造出一個新的字符串

想一想

(面試題)給定一個字符串a(chǎn)Str掘譬,返回使用空格或者'\t'分割后的倒數(shù)第二個子串

六、列表介紹

想一想:

前面學習的字符串可以用來存儲一串信息呻拌,那么想一想葱轩,怎樣存儲咱們班所有同學的名字呢?

定義100個變量藐握,每個變量存放一個學生的姓名可行嗎靴拱?有更好的辦法嗎?

答:

列表

<1>列表的格式

變量A的類型為列表

比C語言的數(shù)組強大的地方在于列表中的元素可以是不同類型的

<2>打印列表

demo:

結果:

七猾普、列表的循環(huán)遍歷

1. 使用for循環(huán)

為了更有效率的輸出列表的每個數(shù)據(jù)袜炕,可以使用循環(huán)來完成

demo:

結果:

2. 使用while循環(huán)

為了更有效率的輸出列表的每個數(shù)據(jù),可以使用循環(huán)來完成

demo:

結果:

八初家、列表的相關操作

列表中存放的數(shù)據(jù)是可以進行修改的偎窘,比如"增"、"刪"溜在、"改""

<1>添加元素("增"append, extend, insert)

append

通過append可以向列表添加元素

demo:

結果:

extend

通過extend可以將另一個集合中的元素逐一添加到列表中

insert

insert(index, object) 在指定位置index前插入元素object

<2>修改元素("改")

修改元素的時候陌知,要通過下標來確定要修改的是哪個元素,然后才能進行修改

demo:

結果:

<3>查找元素("查"in, not in, index, count)

所謂的查找掖肋,就是看看指定的元素是否存在

in, not in

python中查找的常用方法為:

in(存在),如果存在那么結果為true纵诞,否則為false

not in(不存在),如果不存在那么結果為true培遵,否則false

demo

結果1:(找到)

結果2:(沒有找到)

說明:

in的方法只要會用了,那么not in也是同樣的用法登刺,只不過not in判斷的是不存在

index, count

index和count與字符串中的用法相同

<4>刪除元素("刪"del, pop, remove)

類比現(xiàn)實生活中籽腕,如果某位同學調(diào)班了,那么就應該把這個條走后的學生的姓名刪除掉纸俭;在開發(fā)中經(jīng)常會用到刪除這種功能皇耗。

列表元素的常用刪除方法有:

del:根據(jù)下標進行刪除

pop:刪除最后一個元素

remove:根據(jù)元素的值進行刪除

demo:(del)

結果:

demo:(pop)

結果:

demo:(remove)

結果:

<5>排序(sort, reverse)

sort方法是將list按特定順序重新排列,默認為由小到大揍很,參數(shù)reverse=True可改為倒序郎楼,由大到小万伤。

reverse方法是將list逆置。

一些基本操作總結:

九呜袁、列表的嵌套

1. 列表嵌套

類似while循環(huán)的嵌套敌买,列表也是支持嵌套的

一個列表中的元素又是一個列表,那么這就是列表的嵌套

2. 應用

一個學校阶界,有3個辦公室虹钮,現(xiàn)在有8位老師等待工位的分配,請編寫程序膘融,完成隨機的分配

運行結果如下:

十芙粱、元組

Python的元組與列表類似,不同之處在于元組的元素不能修改氧映。元組使用小括號春畔,列表使用方括號。

<1>訪問元組

<2>修改元組

說明:python中不允許修改元組的數(shù)據(jù)岛都,包括不能刪除其中的元素律姨。

<3>元組的內(nèi)置函數(shù)count, index

index和count與字符串和列表中的用法相同

十一、字典介紹

想一想:

如果有列表

需要對"xiaoWang"這個名字寫錯了疗绣,通過代碼修改:

如果列表的順序發(fā)生了變化线召,如下

此時就需要修改下標,才能完成名字的修改

有沒有方法多矮,既能存儲多個數(shù)據(jù)缓淹,還能在訪問元素的很方便就能夠定位到需要的那個元素呢?

答:

字典

另一個場景:

學生信息列表,每個學生信息包括學號、姓名懒构、年齡等谎痢,如何從中找到某個學生的信息?

循環(huán)遍歷字逗? No!

<1>生活中的字典

<2>軟件開發(fā)中的字典

變量info為字典類型:

說明:

字典和列表一樣,也能夠存儲多個數(shù)據(jù)

列表中找某個元素時躏吊,是根據(jù)下標進行的

字典中找某個元素時,是根據(jù)'名字'(就是冒號:前面的那個值帐萎,例如上面代碼中的'name'比伏、'id'、'sex')

字典的每個元素由2部分組成疆导,鍵:值赁项。例如 'name':'班長' ,'name'為鍵,'班長'為值

<3>根據(jù)鍵訪問值

結果:

若訪問不存在的鍵,則會報錯:

在我們不確定字典中是否存在某個鍵而又想獲取其值時悠菜,可以使用get方法舰攒,還可以設置默認值:

十二、字典的常見操作1

<1>修改元素

字典的每個元素中的數(shù)據(jù)是可以修改的悔醋,只要通過key找到摩窃,即可修改

demo:

結果:

<2>添加元素

demo:訪問不存在的元素

結果:

如果在使用變量名['鍵'] = 數(shù)據(jù)?時,這個“鍵”在字典中篙顺,不存在偶芍,那么就會新增這個元素

demo:添加新的元素

結果:

<3>刪除元素

對字典進行刪除操作,有一下幾種:

del

clear()

demo:del刪除指定的元素

結果

demo:del刪除整個字典

結果

demo:clear清空整個字典

結果

end:字典常用操作總結:

十三德玫、字典的常見操作2

<1>len()

測量字典中匪蟀,鍵值對的個數(shù)

<2>keys

返回一個包含字典所有KEY的列表

<3>values

返回一個包含字典所有value的列表

<4>items

返回一個包含所有(鍵,值)元祖的列表

<5>has_key

dict.has_key(key)如果key在字典中宰僧,返回True材彪,否則返回False

十四、遍歷

通過for ... in ...:的語法結構琴儿,我們可以遍歷字符串段化、列表、元組造成、字典等數(shù)據(jù)結構显熏。

注意python語法的縮進

字符串遍歷

列表遍歷

元組遍歷

字典遍歷

<1> 遍歷字典的key(鍵)

<2> 遍歷字典的value(值)

<3> 遍歷字典的項(元素)

<4> 遍歷字典的key-value(鍵值對)

想一想,如何實現(xiàn)帶下標索引的遍歷

enumerate()

十五晒屎、公共方法

運算符

運算符Python 表達式結果描述支持的數(shù)據(jù)類型

+[1, 2] + [3, 4][1, 2, 3, 4]合并字符串喘蟆、

列表、

元組

*'Hi!' * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']復制字符串鼓鲁、

列表蕴轨、

元組

in3 in (1, 2, 3)True元素

是否

存在

字符串、

列表骇吭、

元組橙弱、

字典

not in4 not in (1, 2, 3)True元素

是否不存在

字符串、

列表燥狰、

元組棘脐、

字典

+

*

in

注意,in在對字典操作時龙致,判斷的是字典的鍵

python內(nèi)置函數(shù)

Python包含了以下內(nèi)置函數(shù)

序號方法描述

1cmp(item1, item2)比較兩個值

2len(item)計算容器中元素個數(shù)

3max(item)返回容器中元素最大值

4min(item)返回容器中元素最小值

5del(item)刪除變量

cmp

注意:cmp在比較字典數(shù)據(jù)時荆残,先比較鍵,再比較值净当。

len

注意:len在操作字典數(shù)據(jù)時,返回的是鍵值對個數(shù)。

max

del

del有兩種用法像啼,一種是del加空格俘闯,另一種是del()

多維列表/元祖訪問的示例

十六、引用

想一想

請問此時b的值為多少忽冻?

請問此時b的值又是多少真朗?

引用

在python中,值是靠引用來傳遞來的僧诚。

我們可以用id()來判斷兩個變量是否為同一個值的引用遮婶。我們可以將id值理解為那塊內(nèi)存的地址標示。

可變類型與不可變類型

可變類型湖笨,值可以改變:

列表 list

字典 dict

不可變類型旗扑,值不可以改變:

數(shù)值類型 int, long, bool, float

字符串 str

元組 tuple

怎樣交換兩個變量的值?

十七慈省、作業(yè)

1. 編程實現(xiàn)對一個元素全為數(shù)字的列表臀防,求最大值、最小值

2. 編寫程序边败,完成以下要求:

統(tǒng)計字符串中袱衷,各個字符的個數(shù)

比如:"hello world" 字符串統(tǒng)計的結果為: h:1 e:1 l:3 o:2 d:1 r:1 w:1

3. 編寫程序,完成以下要求:

完成一個路徑的組裝

先提示用戶多次輸入路徑笑窜,最后顯示一個完成的路徑致燥,比如/home/python/ftp/share

4. 編寫程序,完成“名片管理器”項目

需要完成的基本功能:

添加名片

刪除名片

修改名片

查詢名片

退出系統(tǒng)

程序運行后排截,除非選擇退出系統(tǒng)嫌蚤,否則重復執(zhí)行功能

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市匾寝,隨后出現(xiàn)的幾起案子搬葬,更是在濱河造成了極大的恐慌,老刑警劉巖艳悔,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件急凰,死亡現(xiàn)場離奇詭異,居然都是意外死亡猜年,警方通過查閱死者的電腦和手機抡锈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乔外,“玉大人床三,你說我怎么就攤上這事⊙钣祝” “怎么了撇簿?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵聂渊,是天一觀的道長。 經(jīng)常有香客問我四瘫,道長汉嗽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任找蜜,我火速辦了婚禮饼暑,結果婚禮上,老公的妹妹穿的比我還像新娘洗做。我一直安慰自己弓叛,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布诚纸。 她就那樣靜靜地躺著撰筷,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咬清。 梳的紋絲不亂的頭發(fā)上闭专,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音旧烧,去河邊找鬼影钉。 笑死,一個胖子當著我的面吹牛掘剪,可吹牛的內(nèi)容都是我干的平委。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼夺谁,長吁一口氣:“原來是場噩夢啊……” “哼廉赔!你這毒婦竟也來了?” 一聲冷哼從身側響起匾鸥,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蜡塌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后勿负,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馏艾,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年奴愉,在試婚紗的時候發(fā)現(xiàn)自己被綠了琅摩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡锭硼,死狀恐怖房资,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情檀头,我是刑警寧澤轰异,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布岖沛,位于F島的核電站,受9級特大地震影響溉浙,放射性物質(zhì)發(fā)生泄漏烫止。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一戳稽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧期升,春花似錦惊奇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至容为,卻和暖如春乓序,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坎背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工替劈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人得滤。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓陨献,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懂更。 傳聞我的和親對象是個殘疾皇子眨业,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容