您好,登錄后才能下訂單哦!
Python字符串對象提供了大量方法用于字符串的檢測、替換和排版等操作,另外還有大量內置函數和運算符也支持對字符串的操作,字符串對象是不可變的,所以字符串對象提供的字符串方法都是返回修改后的新字符串
列表是最重要的Python內置對象之一,是包含若干元素的有序連續內存空間,當列表增加或刪除元素時,列表對象自動進行內存的擴展和收縮,從而保證相鄰元素之間沒有縫隙
append(x) 將x添加到列表尾部
extend(L) 將列表L內所有元素追加到列表尾部
insert(x,index) 在列表index的位置插入x,如果index為整數或者大于列表長度,則將x添加到列表尾部,如果index為負數或者小于列表長度的相反數則在列表頭部插入x
remove(x) 在列表中刪除第一個值為x的元素
pop([index]) 彈出索引為index的值,如果不指定index則刪除最后一個怨怒是
clear() 清空列表,保留列表對象
index(x) 返回x的索引,如果不存在則拋出異常
count(x) 返回x在列表中出現的次數
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() 清空集合
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。