溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python全棧開(kāi)發(fā)之?dāng)?shù)據(jù)類型

發(fā)布時(shí)間:2020-07-15 13:07:15 來(lái)源:網(wǎng)絡(luò) 閱讀:572 作者:灰白世界 欄目:編程語(yǔ)言

No.1 字符串

Python字符串對(duì)象提供了大量方法用于字符串的檢測(cè)、替換和排版等操作,另外還有大量?jī)?nèi)置函數(shù)和運(yùn)算符也支持對(duì)字符串的操作,字符串對(duì)象是不可變的,所以字符串對(duì)象提供的字符串方法都是返回修改后的新字符串

  • find() 檢測(cè)一個(gè)字符串是否包含在另一個(gè)字符串中,如果找到返回開(kāi)始的索引值,否則返回-1
  • rfind() 類似于find()函數(shù),不過(guò)是從右邊開(kāi)始查找
  • index() 和find()方法一樣,只不過(guò)如果字符串不在另一個(gè)字符串中會(huì)報(bào)一個(gè)異常.
  • rindex() 類似于index(),不過(guò)是從右邊開(kāi)始查找
  • count() 返回一個(gè)字符串在另一個(gè)字符串中出現(xiàn)的次數(shù)
  • split(str[,num]) 以str為分隔符切片string,如果num有指定值,則僅分隔num個(gè)子字符串
  • rsplit(str[,num]) 以str為分隔符切片字符串,如果num有指定值,則僅分隔num個(gè)子字符串
  • partition(str) 從str出現(xiàn)的第一個(gè)位置起,把字符串分成一個(gè)3元素的元組
  • rpartition(str) 類似于partition函數(shù)不過(guò)是從右邊開(kāi)始查找.
  • join(str) 以str作為分隔符,將seq中所有的元素合并為一個(gè)新的字符串
  • lower() 轉(zhuǎn)換字符串中所有大寫(xiě)字符為小寫(xiě).
  • upper() 轉(zhuǎn)換字符串中的小寫(xiě)字母為大寫(xiě)
  • capitalize() 首字母大寫(xiě)
  • title() 返回標(biāo)題化的字符串,每個(gè)單詞首字母都是大寫(xiě)
  • swapcase() 翻轉(zhuǎn)字符串大小寫(xiě)
  • replace(str1,str[,num]) 把字符串中的str1替換成str2,如果num指定,則替換不超過(guò)num次.
  • strip() 刪除字符串兩邊的空格
  • rstrip() 刪除字符串末尾的空格.
  • lstrip() 刪除字符串左邊的空格
  • startswith(str) 檢查字符串是否以str開(kāi)始,如果是,返回 True,否則返回 False
  • endswith(str) 檢查字符串是否以str結(jié)束,如果是,返回 True,否則返回 False
  • isalnum 如果字符串中存在一個(gè)數(shù)字則返回True,否則返回False
  • isalpha() 全部為字母返回True,否則返回False
  • isdigit() 全部為數(shù)字返回True,否則返回False
  • isspace() 如果字符串中只包含空格,則返回True,否則返回False
  • isupper() 如果字符串中包含至少一個(gè)區(qū)分大小寫(xiě)的字符,并且所有這些字符都是大寫(xiě),則返回 True,否則返回 False
  • islower() 如果字符串中包含至少一個(gè)區(qū)分大小寫(xiě)的字符,并且所有這些字符都是小寫(xiě),則返回 True,否則返回 False
  • center() 返回指定長(zhǎng)度的字符串,居中對(duì)齊,以空格填充
  • ljust() 返回指定長(zhǎng)度的字符串,左對(duì)齊,以空格填充
  • rjust()返回指定長(zhǎng)度的字符串,右對(duì)齊,以空格填充
  • zfill() 反hi制定長(zhǎng)度的字符串,左對(duì)齊,在左側(cè)填充數(shù)字0

No.2 列表

列表是最重要的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表示降序

  • copy() 淺拷貝
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)生新列表,效率比+高,推薦使用+=
  • 列表推導(dǎo)式
    [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è)

No.3 元組

  • 元組與列表的異同點(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)式在用法上和列表推導(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

No.4 字典

字典中的每個(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() 清空字典中的所有元素

  • copy() 返回字典對(duì)象的淺復(fù)制

No.5 集合

集合屬于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() 清空集合

    No.6 內(nèi)置函數(shù)

  • abs(x) 返回?cái)?shù)字x的絕對(duì)值或復(fù)數(shù)x的模
  • all(iterable) 如果可迭代對(duì)象iterable中所有元素x都等價(jià)于True,則返回True,否則,返回False,空迭代對(duì)象返回True
  • any(iterable) 只要可迭代對(duì)象iterable存在元素x使得bool(x)為T(mén)rue,則返回True,空迭代對(duì)象返回False
  • ascii(obj) 把對(duì)象轉(zhuǎn)換成ASCII碼表現(xiàn)形式
  • bin(x) 把整數(shù)x轉(zhuǎn)換為二進(jìn)制形式
  • bool(x) 返回x等價(jià)的布爾值
  • bytes(x) 生成字節(jié)串
  • callable(obj) 測(cè)試對(duì)象obj是否可調(diào)用
  • compile() 用于把Python代碼編譯成可被exec()或eval()函數(shù)執(zhí)行的代碼對(duì)象
  • complex(real,[imag]) 返回復(fù)數(shù)
  • chr(x) 返回Unicode編碼為x的字符串
  • delattr(obj,name) 刪除屬性,等價(jià)于del obj.name
  • dir(obj) 返回指定對(duì)象或模塊obj的成員列表,如果不帶參數(shù)則返回當(dāng)前作用域內(nèi)所有標(biāo)識(shí)符
  • divmod(x,y) 返回包含整商和余數(shù)的元組
  • enumerate(iterable[,start]) 返回包含元素形式為(start,iterable[0]),(start+1,iterable[1]),(start+2,iterable[2]),...的迭代器對(duì)象,start表示索引的起始值
  • eval(s[,globals[,locals]]) 計(jì)算并返回字符串s中表達(dá)式的值
  • exex(x) 執(zhí)行代碼或代碼對(duì)象x
  • exit() 退出當(dāng)前解釋器環(huán)境
  • filter(func,seq) 返回fiter對(duì)象,其中包含序列seq中使得單參數(shù)函數(shù)func返回值為T(mén)rue的那些元素,如果函數(shù)func為None則返回包含seq中等價(jià)于True的元素的filter對(duì)象
  • float(x) 把整數(shù)或字符串x轉(zhuǎn)換為浮點(diǎn)并返回
  • frozenset([x]) 創(chuàng)建不可變的集合對(duì)象
  • getattr(obj,name[,default]) 獲取對(duì)象中指定屬性的值,等價(jià)于obj.name,如果不存在指定屬性則返回default的值,如果要訪問(wèn)的屬性不存在并且沒(méi)有指定的default則拋出異常
  • globals() 返回包含當(dāng)前作用域內(nèi)全局變量及其值的字典
  • hasattr(obj,name) 測(cè)試對(duì)象obj是否具有名為name的成員
  • hash(x) 返回對(duì)象x的哈希值,如果x不可哈希則拋出異常
  • help(obj) 返回對(duì)象obj的幫助信息
  • hex(x) 把整數(shù)x轉(zhuǎn)換為十六進(jìn)制
  • id(obj) 返回對(duì)象obj的地址
  • input([提示]) 顯示提示,接受鍵盤(pán)輸入的內(nèi)容,返回字符串
  • int(x[,d]) 返回實(shí)數(shù)、分?jǐn)?shù)或高精度實(shí)數(shù)x的整數(shù)部分,或把d進(jìn)制的字符串x轉(zhuǎn)換為十進(jìn)制并返回,d默認(rèn)為十進(jìn)制
  • isinstance(obj,class) 測(cè)試對(duì)象obj是否屬于指定類型
  • insubclass(cls,class) 測(cè)試類cls是否為指定類型的子類,用法與isinstance()函數(shù)相似
  • iter(...) 返回指定對(duì)象的可迭代對(duì)象
  • len(obj) 返回對(duì)象obj包含的元素個(gè)數(shù),適用于列表、元組、字典、字符串以及range對(duì)象,不適用于具有惰性求值特點(diǎn)的生成器對(duì)象和map、zip等迭代對(duì)象
  • list([x])、set([x])、tuple([x])、dict([x]) 把對(duì)象x轉(zhuǎn)換成為列表、集合、元組或字典并返回,或生成空列表、空集合、空元組、空字典
  • locals() 返回包含當(dāng)前作用域內(nèi)局部變量及其值的字典
  • map(func,*iterables) 返回包含若干函數(shù)值的map對(duì)象,函數(shù)func的參數(shù)分別來(lái)自與iterables指定的一個(gè)或多個(gè)迭代對(duì)象
  • max(...)、min(...) 返回多個(gè)值中或者包含有限個(gè)元素的可迭代對(duì)象中所有元素的最大值、最小值,要求所有元素之間可比較大小,允許指定排序規(guī)則,參數(shù)為可迭代對(duì)象時(shí)還允許指定默認(rèn)值
  • next(iterator[,default]) 返回迭代對(duì)象x中的下一個(gè)元素,允許指定迭代結(jié)束之后繼續(xù)迭代時(shí)返回的默認(rèn)值
  • oct(x) 把整數(shù)x轉(zhuǎn)換為八進(jìn)制串
  • open(fn[,mode]) 以指定模式mode打開(kāi)文件fn并返回文件對(duì)象
  • ord(x) 返回一個(gè)字符x的Unicode字符
  • pow(x,y,z) 返回新的y次方,等價(jià)與xy或(xy)%z
  • print(value,...sep='',end='\n',file=sys.stdout,flush=False) 基本輸出函數(shù),默認(rèn)輸出到屏幕,相鄰數(shù)據(jù)使用空格分隔,以換行符結(jié)束所有數(shù)據(jù)的輸出
  • quit() 退出當(dāng)前解釋器環(huán)境
  • range([start,]end[,step]) 返回range對(duì)象,其中包含左閉右開(kāi)區(qū)間[start,end)內(nèi)以step為步長(zhǎng)的整數(shù)
  • reduce(func,sequence[,initial]) 將雙參數(shù)的函數(shù)func以迭代的方式從左到右依次應(yīng)用至序列seq中每個(gè)元素,并把中間計(jì)算結(jié)果作為下一次計(jì)算的操作數(shù)之一,最終返回單個(gè)值作為結(jié)果(from functools import reduce)
  • repr(obj) 返回對(duì)象obj的規(guī)范化字符串表示形式,對(duì)于大多數(shù)對(duì)象有eval(repr(obj))==obj
  • reversed(seq) 返回seq(可以是列表、元組、字符串、range等對(duì)象)中所有元素逆序后的迭代器對(duì)象,不適用于具有惰性求值特點(diǎn)的生成器對(duì)象和map、zip等可迭代對(duì)象
  • round(x[,小數(shù)位數(shù)]) 對(duì)x進(jìn)行四舍五入,若不指定小數(shù)位數(shù),則返回整數(shù)
  • sorted(iterable,key=None,reverse=False) 返回排序后的列表,其中iterable表示要排序的序列或迭代對(duì)象,key用來(lái)指定排序規(guī)則或依據(jù),reverse用來(lái)指定升序或降序
  • str(obj) 把對(duì)象obj直接轉(zhuǎn)換為字符串
  • sum(x,start=0) 返回序列x中所有元素之和,允許指定起始值start,返回start+sum(x)
  • type(obj) 返回對(duì)象obj的類型
  • zip(seq1[,seq2[...]]) 返回zip對(duì)象,其中元素為(seq1[i],seq2[i],...)形式的元祖,最終結(jié)果中包含的元素個(gè)數(shù)取決于所有參數(shù)序列或可迭代對(duì)象中最短的那個(gè)
向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI