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í)行功能