一. 列表(list)git
1. 列表初始化定義有兩種方式:api
1.a=[] #空list數組
2.a=list() #空listapp
2.列表的下標是從0開始:ide
#list #列表、數組函數
stus = ['王志華','喬美玲','段鑫琪','王立文' ]測試
# 0 1 2 3spa
列表的長度:len.net
結果以下:3d
3.列表的新增:
1.直接加在末尾:append
結果以下:
2.指定位置增長:insert,帶下標和要插入的值
結果以下:
4.列表的修改:直接經過下標賦值,下標必定要在列表的長度範圍內(能夠用正負數,-1表明列表的最後一位),超出則報錯
正常賦值:
結果以下:
異常賦值:超出列表範圍
結果以下:
5.列表的刪除:
1.pop:有返回值,是返回刪除的那個元素。不帶參數爲默認刪除列表的最後一個元素,也能夠指定下標。若是指定一個不存在的下標,則會報錯。是對下標指定刪除。
正常刪除:
結果以下:
異常刪除:
結果以下:
2.remove:返回None,經過列表元素值刪除,若是傳入一個不存在的元素,則會報錯。是對元素值指定刪除。
技術要點:
1)在列表非尾部增長或刪除元素時,該位置後面元素會向後移動或向前移動,保證元素之間沒有縫隙,這樣的話,這些元素的索引會發生變化。
2)remove()方法刪除列表中指定值的首次出現,也就是說,以lst.remove(3)爲例,若是列表lst中有多個3,那麼只有第一個3被刪除,同時該位置後面的全部元素向前移動,索引減1。
正常刪除:
結果以下:
異常刪除:
結果以下:
3. del:返回None,是經過列表進行下標檢索刪除。若是指定不存在則報錯。是對一個變量進行指定刪除,因爲是對列表變量進行刪除,則能夠刪除一個列表區間段和整個列表,del是解除變量的引用,當整個列表引用解除後,列表則不存在。
正常刪除:
結果以下:
批量刪除:
結果以下:
由於參數是變量,則也能夠刪除整個列表,刪除後的列表不可用。
異常刪除:
結果以下:
4.清空列表:clear
與del不一樣,clear只是清空列表數據,不會解除對列表的引用,清空完列表還在。
6.列表的查找:
1.經過指定下標獲取某個元素的值:stus[3]
2.查詢某個元素在list裏面出現的次數:count,若是未出現則爲0
3.返回某個元素的下標:index,若是列表裏出現屢次,則返回第一次出現的下標。若是元素不存在則報錯。
正常測試:
異常查詢:
7.列表排序:
1.reverse:列表反轉,該方法返回None,可是會對列表的元素進行反向排序。
2.sort:函數用於對原列表進行排序,若是指定參數,則使用比較函數指定的比較函數。
8.兩個list合併:extend
9.布爾類型:布爾類型只有Ture,False,經常使用於真假判斷。
判斷一個元素在不在list裏,能夠用in:
10.list循環:
1.普通循環:若是直接循環一個list,那麼每次取的就是list裏面的每個元素
2.enumerate:同時取到列表的下標和值
11.多維數組:列表嵌套
須要一層層的定位到要操做的維數,其餘全部的方法同一維同樣。
12.切片:list取值的一種方式,它指定範圍取值,顧頭不顧尾,能夠指定步長(以N爲總體做爲一個跨度),數值能夠爲負數,可是指定的值都要在list範圍內,否則會報錯。
按照取值的方向,前下標必定要先比後下標先出現,不然取不到正確的值:
二.字典(dict):
字典是一個大括號括起來的key-value形式,與list不一樣的是,dict是無序的,即每次打印可能看到值得順序都不同;dict裏的key是
惟一的不容許重複,而list裏的值是能夠重複的。所以dict的查詢比list快,由於無序遍歷。
1.查詢:
直接經過key獲取值,和列表取值方式同樣,可是若是key的值不存在會報錯:
爲了防止key不存在產生的報錯,使用get查詢,若是key不存在,get默認返回None,也能夠指定當key不存在時的返回值。
2.修改:
和list同樣,經過key直接賦值。
3.新增:
同修改同樣,直接用key賦值,因爲同修改同樣,因此當key若是是已存在的,則會進行修改操做:
爲了不上述的新增變修改,可使用setdefault,用setdefault新增一個已經存在的key,它不會改變原來key的value。
4.刪除:
1.pop:返回刪除的value值,與list不一樣的是必須制定key值。
2.del:無返回值,解除引用,做用整個dict的時候,dict則再也不存在,同list。
3.clear():清空,只會清除內容,可是保留變量引用。
4.popitem():隨機刪除一個非空dict的key-value,且將刪除的這個值返回。
5.循環:
1.直接循環:效率高,不須要將dict轉換成list,遍歷取的是dict裏的key值。
2.間接取key循環:dict.keys()效率低,會先從dict將全部的key取出來組成一個list再進行for遍歷。
3.value循環:dict.values()該方法也會先從dict將全部的value取出來組成一個list再進行for遍歷。
4.key,value循環:dict.items()該方法會將dict的key-value以元組的形式組合成一個一位數組再進行遍歷。
6.判斷key是否存在:in
7.字典嵌套:
字典嵌套也是層層定位。
若有如下字典:
結果以下:
三.字符串:
下標 索引、切片 一樣適用於字符串,字符串也是能夠循環的。
如下是字符串的經常使用方法介紹:
1.strip:以指定方式去掉字符串兩邊的內容,字符串中間的不能夠去除。不帶參數默認是去掉空格和換行符。
2.count:某個字符串出現的次數。若是沒有出現,則次數爲0。
3.index:找某個字符串下標,若是有多個,則返回第一次出現的下標。若是查找的字符串不存的話,報錯(和list同樣)。
4.find:找某個字符串下標,若是有多個,則返回第一次出現的下標。查找的字符串不存在會返回-1。與index的區別在於找不到不會報錯。
5.replace:將字符串中的字符指定替換。能夠設定替換的個數,默認爲所有替換。替換以後不會改變原有的字符串,會返回一個新的字符串。
6.upper:將字符串中的小寫字母轉爲大寫字母。替換以後不會改變原有的字符串,會返回一個新的字符串。
7.lower:將字符串中的大寫字母轉爲小寫字母。替換以後不會改變原有的字符串,會返回一個新的字符串。
8.capitalize:將字符串中的首字母大寫。執行後不會改變原有的字符串,會返回一個新的字符串。
9.startswith:判斷是否以某個字符串開頭。
10.endswith:判斷是否以某個字符串結尾。用於文件後綴名很方便。
11.islower:判斷是否都是小寫字母。
12.isupper:判斷是否都是大寫字母。
13.isdigit:判斷是否爲純數字。
14.center:將字符串居中顯示,長度指定,不足的地方以指定模式補齊,執行後不會改變原有的字符串,會返回一個新的字符串。
15.isalpha:判斷是否是爲字母、或者漢字,不能有數字和特殊符號。
16.isalnum:字符串裏面只要沒有特殊字符,就返回true。
17.isidentifier:是否是一個合法的變量名。
18.isspace:檢測字符串是否只由空格組成。
19.format:一種格式化字符串的函數,基本語法是經過 {} 和 : 來代替之前的 % 。方便的是當佔位符太多時,能夠忽略佔位符的順序。SQL語句經常使用。
例如沒有格式化以前,語句:
s='insert into user value (%s,%s,%s,%s,%s,%s)'%(user,paswd,)
格式化的方法爲:
20.format_map:執行字符串格式化操做,替換字段使用{}分隔,同str.format(**mapping), 除了直接使用mapping,而不復制到一個dict。和format相比,須要將要輸入的參數以dict的形式直接映射。SQL語句經常使用。
結果以下:
21.zfill:不夠的位數以0補齊。位數若是夠了則忽略。
22.split:將字符串以指定形式分隔後以list形式返回。默認以空格符分隔。
23.join:以某個字符串把list裏面元素連起來,以字符串的形式返回。操做對象必須是個list。
四.簡單的文件操做:
1.文件的四種操做:
1.open:打開文件,必須存在在才能夠讀。
2.close:關閉文件。
3.read:讀文件。
4.write:寫文件。
2.文件的模式:
1.r 打開只讀文件,該文件必須存在。
2.r+ 打開可讀寫的文件,該文件必須存在。從頂部開始寫,會覆蓋以前此位置的內容
3.w 打開只寫文件,若文件存在則文件長度清爲0,即該文件內容會消失。若文件不存在則創建該文件。
4.w+ 打開可讀寫文件,若文件存在則文件長度清爲零,即該文件內容會消失。若文件不存在則創建該文件。
5.a 以附加的方式打開只寫文件。若文件不存在,則會創建該文件,若是文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。
6.a+ 以附加方式打開可讀寫的文件。若文件不存在,則會創建該文件,若是文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
7.上述的形態字符串均可以再加一個b字符,如rb、w+b或ab+等組合,加入b 字符用來告訴函數庫打開的文件爲二進制文件,而非純文字文件。不過在POSIX系統,包含Linux都會忽略該字符。