您好,登錄后才能下訂單哦!
Python字符串對(duì)象提供了大量方法用于字符串的檢測(cè)、替換和排版等操作,另外還有大量?jī)?nèi)置函數(shù)和運(yùn)算符也支持對(duì)字符串的操作,字符串對(duì)象是不可變的,所以字符串對(duì)象提供的字符串方法都是返回修改后的新字符串
列表是最重要的Python內(nèi)置對(duì)象之一,是包含若干元素的有序連續(xù)內(nèi)存空間,當(dāng)列表增加或刪除元素時(shí),列表對(duì)象自動(dòng)進(jìn)行內(nèi)存的擴(kuò)展和收縮,從而保證相鄰元素之間沒(méi)有縫隙
append(x) 將x添加到列表尾部
extend(L) 將列表L內(nèi)所有元素追加到列表尾部
insert(x,index) 在列表index的位置插入x,如果index為整數(shù)或者大于列表長(zhǎng)度,則將x添加到列表尾部,如果index為負(fù)數(shù)或者小于列表長(zhǎng)度的相反數(shù)則在列表頭部插入x
remove(x) 在列表中刪除第一個(gè)值為x的元素
pop([index]) 彈出索引為index的值,如果不指定index則刪除最后一個(gè)怨怒是
clear() 清空列表,保留列表對(duì)象
index(x) 返回x的索引,如果不存在則拋出異常
count(x) 返回x在列表中出現(xiàn)的次數(shù)
reverse() 將列表逆轉(zhuǎn)
sort(key=None,reverse=False) 對(duì)列表中的元素進(jìn)行排序,key表示排序規(guī)則,F(xiàn)alse表示升序,True表示降序
L1 = [1,2,3,4]
L2 = [5,6,7,8]
L1 = L1+L2 會(huì)產(chǎn)生并返回一個(gè)新列表
L1 += L2 實(shí)質(zhì)上是調(diào)用extend,并不會(huì)產(chǎn)生新列表,效率比+高,推薦使用+=
[x*x for x in range(10)]
# 實(shí)現(xiàn)嵌套列表的平鋪
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]
# 過(guò)濾不符合元素
import os
[filename for filename in os.listdir('.') if filename.endswith('.py')]
# 同時(shí)遍歷多個(gè)列表或可迭代對(duì)象
[(x,y) for x in range(1,4) for y in range(1,6,2) if x==y] 輸出[(1, 1), (3, 3)]
# 使用列表推導(dǎo)式實(shí)現(xiàn)矩陣轉(zhuǎn)置
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]]
# 列表推導(dǎo)式可以使用函數(shù)或復(fù)雜表達(dá)式
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]
# 列表推導(dǎo)式支持文件迭代
with open('my.ini','r') as f:
print([line for line in f])
# 使用列表推導(dǎo)式生成100以內(nèi)的素?cái)?shù)
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] # 隔一個(gè)取一個(gè),返回包含原列表中偶數(shù)位置的列表
num_list[1::2] # 隔一個(gè)取一個(gè),返回包含原列表中奇數(shù)位置的列表
num_list[3:6] # 指定切片的起始位置
num_list[0:100] # 切片結(jié)束位置大于列表長(zhǎng)度時(shí),從列表尾部截?cái)?num_list[100] # 拋出異常,不允許越界訪問(wèn)
num_list[100:] # 切片開(kāi)始位置大于列表長(zhǎng)度時(shí),返回空列表
使用切片為列表增加元素
num_list[len(num_list):]=[9] # 在列表尾部插入元素
num_list[:0]=[1,2] # 在列表頭部插入多個(gè)元素
num_list[3:3]=[4] # 在列表的某個(gè)位置插入元素
使用切片替換和修改列表中的元素
num_list[:3]=[1,2,3] # 替換元素,等號(hào)兩邊的列表長(zhǎng)度必須相等,否則拋出異常
num_list[3:] = [4,5,6] # 連續(xù)替換
num_list[::2]=[0]*3 # 隔一個(gè)替換一個(gè)
num_list[1::2]=range(3) # 從開(kāi)始位置隔一個(gè)替換一個(gè)
使用切片刪除列表中的元素
num_list[:3]=[] # 刪除前三個(gè)元素
del num_list[::3] # 刪除前三個(gè)元素
del num_list[::2] # 隔一個(gè)刪除一個(gè)
元組與列表的異同點(diǎn)
列表和元組都屬于有序集合,都支持雙向索引訪問(wèn)內(nèi)部,以及使用count()、index()、len()、map()、filter()、等大量?jī)?nèi)置函數(shù)和+、*、+=、in等運(yùn)算符,元組屬于不可變序列,列表屬于可變序列,因此,元組沒(méi)有提供append()、insert()、extend()等方法,同樣元組也沒(méi)有提供remove()、pop()方法,不能使用del刪除元組中的元素,只能使用del刪除整個(gè)元組,元組可以使用切片,但是只能使用切片訪問(wèn)元素,不支持修改和刪除操作,而且元組在內(nèi)部做了大量?jī)?yōu)化,因此,元組的效率比列表要高,訪問(wèn)速度要比列表高許多,建議使用元組,因?yàn)樵M的不可變性決定了使用元組更加安全可靠
生成器推導(dǎo)式在用法上和列表推導(dǎo)式類似,形式上使用()作為定界符,最大的不同時(shí)生成器返回的是一個(gè)生成器對(duì)象,生成器對(duì)象和迭代器對(duì)象類似,都具有惰性的特點(diǎn),只在調(diào)用時(shí)才會(huì)產(chǎn)生新元素,比列表推導(dǎo)式具有更高的效率,空間占用率低,適用于大數(shù)據(jù)的場(chǎng)景,使用生成器產(chǎn)生元素時(shí),可以將其轉(zhuǎn)換為列表、元組,也可以使用生成器對(duì)象的next()方法和next()進(jìn)行遍歷,或者直接使用for循環(huán)遍歷,但是無(wú)論哪種形式,只能從前往后訪問(wèn)其中的元素,不可以訪問(wèn)已經(jīng)訪問(wèn)過(guò)的元素
g=(i**2 for i in range(10)) # 創(chuàng)建生成器對(duì)象 print(g) # 輸出<generator object <genexpr> at 0x0000028366F8AAF0> tuple_g=tuple(g) # 將生成器對(duì)象轉(zhuǎn)換成元組 print(tuple_g) # 輸出(0, 1, 4, 9, 16, 25, 36, 49, 64, 81) list_g=list(g) # 將生成器對(duì)象轉(zhuǎn)換成列表 print(list_g) # 輸出[] g=(i**2 for i in range(10)) # 重新獲取生成器 list_g=list(g) # 將生成器對(duì)象轉(zhuǎn)換成列表 print(list_g) # 輸出[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] g=(i**2 for i in range(10)) # 重新獲取生成器對(duì)象 print(g.__next__()) # 輸出0 print(next(g)) # 輸出1 g=(i**2 for i in range(10)) # 重新獲取生成器對(duì)象 for i in g: print(i,end=' ') # 輸出0 1 4 9 16 25 36 49 64 81
字典中的每個(gè)元素表示一種映射關(guān)系或?qū)?yīng)關(guān)系,根據(jù)提供的鍵作為下標(biāo),可以訪問(wèn)對(duì)應(yīng)的值,如果不存在這個(gè)鍵
會(huì)拋出異常,內(nèi)置函數(shù)len()、max()、min()、sum()、sorted()、map()、filter()、enumerate()等同樣適用于字典
get(x[,y]) 如果字典中存在該鍵則返回對(duì)應(yīng)的值,否則返回指定值
setdefault(x[,y]) 指定的鍵存在,返回對(duì)應(yīng)的值,如果鍵不存在,就添加一個(gè)新元素并設(shè)置對(duì)應(yīng)值默認(rèn)為None
values() 遍歷字典的值
keys() 遍歷字典的鍵
items() 遍歷字典的鍵和值
pop() 彈出指定鍵對(duì)應(yīng)的元素,并返回被刪除的元素
clear() 清空字典中的所有元素
集合屬于Python無(wú)序可變序列,使用一對(duì)大括號(hào)作為定界符,元素之間使用逗號(hào)分隔,同一個(gè)集合內(nèi)的每個(gè)元素都是唯一的,元素之間不允許重復(fù),集合中只能包含數(shù)字、字符串、元組等不可變類型,內(nèi)置函數(shù)len()、max()、min()、sum()、sorted()、map()、filter()、enumerate()等同樣適用于字典
集合運(yùn)算
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對(duì)象等其他可迭代對(duì)象轉(zhuǎn)換成集合,如果原來(lái)的數(shù)據(jù)中存在重復(fù)數(shù)據(jù),轉(zhuǎn)換成集合后將只保留一個(gè),如果原序列有可變類型,將無(wú)法轉(zhuǎn)換成集合,拋出異常
add() 將元素添加到集合中,如果集合中存在該元素將忽略此操作
update() 將另一個(gè)集合中的元素添加到當(dāng)前集合中,并自動(dòng)去除重復(fù)元素
pop() 隨機(jī)刪除并返回集合中的一個(gè)元素,如果集合為空則拋出異常
remove(x) 刪除集合中一個(gè)指定的元素,如果不存在則拋出異常
discard(x) 刪除集合中一個(gè)指定的元素,如果不存在則忽略此操作
clear() 清空集合
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。