Python字符串對象提供了大量方法用於字符串的檢測、替換和排版等操做,另外還有大量內置函數和運算符也支持對字符串的操做,字符串對象是不可變的,因此字符串對象提供的字符串方法都是返回修改後的新字符串git
列表是最重要的Python內置對象之一,是包含若干元素的有序連續內存空間,當列表增長或刪除元素時,列表對象自動進行內存的擴展和收縮,從而保證相鄰元素之間沒有縫隙api
append(x) 將x添加到列表尾部安全
extend(L) 將列表L內全部元素追加到列表尾部app
insert(x,index) 在列表index的位置插入x,若是index爲整數或者大於列表長度,則將x添加到列表尾部,若是index爲負數或者小於列表長度的相反數則在列表頭部插入xide
remove(x) 在列表中刪除第一個值爲x的元素函數
pop([index]) 彈出索引爲index的值,若是不指定index則刪除最後一個怨怒是測試
clear() 清空列表,保留列表對象大數據
index(x) 返回x的索引,若是不存在則拋出異常優化
count(x) 返回x在列表中出現的次數ui
reverse() 將列表逆轉
sort(key=None,reverse=False) 對列表中的元素進行排序,key表示排序規則,False表示升序,True表示降序
L1 = [1,2,3,4] L2 = [5,6,7,8] L1 = L1+L2 會產生並返回一個新列表 L1 += L2 實質上是調用extend,並不會產生新列表,效率比+高,推薦使用+=
[x*x for x in range(10)] # 實現嵌套列表的平鋪 vec=[[1,2,3],[4,5,6],[7,8,9]] [num for elem in vec for num in elem] # 輸出[1,2,3,4,5,6,7,8,9] # 過濾不符合元素 import os [filename for filename in os.listdir('.') if filename.endswith('.py')] # 同時遍歷多個列表或可迭代對象 [(x,y) for x in range(1,4) for y in range(1,6,2) if x==y] 輸出[(1, 1), (3, 3)] # 使用列表推導式實現矩陣轉置 mattrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] [[row[i] for row in mattrix] for i in range(10)]# 輸出[[1,5,9],[2,6,10],[3,7,11],[4,8,12]] # 列表推導式可使用函數或複雜表達式 def fun(x): if x%2==0: return x**2 else: return x+1 [fun(x) for x in range(4) if x>0] # 輸出[2,4,4,16] # 列表推導式支持文件迭代 with open('my.ini','r') as f: print([line for line in f]) # 使用列表推導式生成100之內的素數 from math import sqrt [p for p in range(2,100) if 0 not in [p%d for d in range(2,int(sqrt(p)+1))]]
犀利的切片
使用切片獲取列表部分元素
num_list = list(range(10)) num_list[::] # 返回包含原列表中全部元素的新列表 num_list[::-1] # 返回包含原列表中全部元素的逆序列表 num_list[::2] # 隔一個取一個,返回包含原列表中偶數位置的列表 num_list[1::2] # 隔一個取一個,返回包含原列表中奇數位置的列表 num_list[3:6] # 指定切片的起始位置 num_list[0:100] # 切片結束位置大於列表長度時,從列表尾部截斷 num_list[100] # 拋出異常,不容許越界訪問 num_list[100:] # 切片開始位置大於列表長度時,返回空列表
使用切片爲列表增長元素
num_list[len(num_list):]=[9] # 在列表尾部插入元素 num_list[:0]=[1,2] # 在列表頭部插入多個元素 num_list[3:3]=[4] # 在列表的某個位置插入元素
使用切片替換和修改列表中的元素
num_list[:3]=[1,2,3] # 替換元素,等號兩邊的列表長度必須相等,不然拋出異常 num_list[3:] = [4,5,6] # 連續替換 num_list[::2]=[0]*3 # 隔一個替換一個 num_list[1::2]=range(3) # 從開始位置隔一個替換一個
使用切片刪除列表中的元素
num_list[:3]=[] # 刪除前三個元素 del num_list[::3] # 刪除前三個元素 del num_list[::2] # 隔一個刪除一個
元組與列表的異同點
列表和元組都屬於有序集合,都支持雙向索引訪問內部,以及使用count()、index()、len()、map()、filter()、等大量內置函數和+、*、+=、in等運算符,元組屬於不可變序列,列表屬於可變序列,所以,元組沒有提供append()、insert()、extend()等方法,一樣元組也沒有提供remove()、pop()方法,不能使用del刪除元組中的元素,只能使用del刪除整個元組,元組可使用切片,可是隻能使用切片訪問元素,不支持修改和刪除操做,並且元組在內部作了大量優化,所以,元組的效率比列表要高,訪問速度要比列表高許多,建議使用元組,由於元組的不可變性決定了使用元組更加安全可靠
生成器推導式在用法上和列表推導式相似,形式上使用()做爲定界符,最大的不一樣時生成器返回的是一個生成器對象,生成器對象和迭代器對象相似,都具備惰性的特色,只在調用時纔會產生新元素,比列表推導式具備更高的效率,空間佔用率低,適用於大數據的場景,使用生成器產生元素時,能夠將其轉換爲列表、元組,也可使用生成器對象的next()方法和next()進行遍歷,或者直接使用for循環遍歷,可是不管哪一種形式,只能從前日後訪問其中的元素,不能夠訪問已經訪問過的元素
g=(i**2 for i in range(10)) # 建立生成器對象 print(g) # 輸出<generator object <genexpr> at 0x0000028366F8AAF0> tuple_g=tuple(g) # 將生成器對象轉換成元組 print(tuple_g) # 輸出(0, 1, 4, 9, 16, 25, 36, 49, 64, 81) list_g=list(g) # 將生成器對象轉換成列表 print(list_g) # 輸出[] g=(i**2 for i in range(10)) # 從新獲取生成器 list_g=list(g) # 將生成器對象轉換成列表 print(list_g) # 輸出[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] g=(i**2 for i in range(10)) # 從新獲取生成器對象 print(g.__next__()) # 輸出0 print(next(g)) # 輸出1 g=(i**2 for i in range(10)) # 從新獲取生成器對象 for i in g: print(i,end=' ') # 輸出0 1 4 9 16 25 36 49 64 81
字典中的每一個元素表示一種映射關係或對應關係,根據提供的鍵做爲下標,能夠訪問對應的值,若是不存在這個鍵
會拋出異常,內置函數len()、max()、min()、sum()、sorted()、map()、filter()、enumerate()等一樣適用於字典
get(x[,y]) 若是字典中存在該鍵則返回對應的值,不然返回指定值
setdefault(x[,y]) 指定的鍵存在,返回對應的值,若是鍵不存在,就添加一個新元素並設置對應值默認爲None
values() 遍歷字典的值
keys() 遍歷字典的鍵
items() 遍歷字典的鍵和值
pop() 彈出指定鍵對應的元素,並返回被刪除的元素
clear() 清空字典中的全部元素
集合屬於Python無序可變序列,使用一對大括號做爲定界符,元素之間使用逗號分隔,同一個集合內的每一個元素都是惟一的,元素之間不容許重複,集合中只能包含數字、字符串、元組等不可變類型,內置函數len()、max()、min()、sum()、sorted()、map()、filter()、enumerate()等一樣適用於字典
集合運算
num1 = {1,2,3,4,5} num2 = {5,6,7,8,9} print(num1|num2) # {1, 2, 3, 4, 5, 6, 7, 8, 9} print(num1.union(num2)) # {1, 2, 3, 4, 5, 6, 7, 8, 9} print(num1-num2) # {1, 2, 3, 4} print(num1.difference(num2)) # {1, 2, 3, 4} print(num1&num2) # {5} print(num1.intersection(num2)) # {5}
set() 將列表、元組、字符串、range對象等其餘可迭代對象轉換成集合,若是原來的數據中存在重複數據,轉換成集合後將只保留一個,若是原序列有可變類型,將沒法轉換成集合,拋出異常
add() 將元素添加到集合中,若是集合中存在該元素將忽略此操做
update() 將另外一個集合中的元素添加到當前集合中,並自動去除重複元素
pop() 隨機刪除並返回集合中的一個元素,若是集合爲空則拋出異常
remove(x) 刪除集合中一個指定的元素,若是不存在則拋出異常
discard(x) 刪除集合中一個指定的元素,若是不存在則忽略此操做
clear() 清空集合