python中必會的四大高級數據類型(字符,元組,列表,字典)
一. 字符串
生活中我們經常坐大巴車,每個座位一個編號,一個位置對應一個下標。 字符串中也有下標,要取出字符串中的部分數據,可以用下標取。
- python中使用切片來截取字符串其中的一段內容,切片截取的內容不包含結束下標對應的數據。
- 切片使用語法:[起始下標:結束下標:步長] ,步長指的是隔幾個下標獲取一個字符。
註意:下標會越界,切片不會
常用函數
練習:
Test='rodma ' print(type(Test)) print('Test的一個字符串%s'%Test[0])#跟數組差不多 #循環輸出 for i in Test: print(i,end=" ")#也可以用‘ ' print('\n') # count():統計出現的次數 print(Test.count('r')) # join():循環取出所有值用xx去連 str='-' print(str.join(Test)) #去除兩邊空格strip(),去除右邊空格:lstrip(),去除右邊空格:rstrip print(Test.strip()) #復制字符串,id函數可以查看對象的內存地址 print('Test的內存地址%d'%id(Test)) b=Test #在此隻是把a對象的內存地址賦給瞭b print('Test的內存地址%d'%id(Test)) print(b) #定義一個數接下來用 datastr='i love Python' #find函數:可以查找目標對象在序列對象中的為值,如果沒找到就返回-1 print(datastr.find('M')) # index()函數:檢測字符串中是否包含子字符串 返回的是下標值 print(datastr.index('i')) #find 和 index 的區別:如果index沒有找到對象就會報錯,find輸出-1,找到輸出0 #starswith()函數:判斷開頭,如果是就true #endswith()函數是判斷結尾 print(datastr.startswith('i')) # capitalize():首字母轉換為大寫 # isalnum():判斷是否是字母和數字,全部是字母就輸出true,有空格也不行 # isalpha() :判斷是否是字母 # isdigit():判斷是否全部是數字 # swapcase():大寫變小寫,小寫變大寫 # title() :把每個單詞的首字母變成大寫 # lower():裝換為小寫。 # upper():轉換為大寫 a='tsx' print(type(a)) print(datastr.capitalize()) print(a.isalnum()) print(datastr.isalpha()) print('abc123'.isdigit()) print(datastr.swapcase()) print(datastr.title()) print(datastr.lower()) print(datastr.upper()) # 切片:是指截取字符串中的其中一段內容。 # 切片使用語法:[起始下標:結束下標:步長] # 切片截取的內容不包含結束下標對應的數據,步長指的是隔幾個下標獲取一個字符。 # slice [start:end:step] 左閉右開 start<=value<end 范圍 # 下標會越界,切片不會 #記住左閉右開的原則 # 定義一個對象 strmgs='Never give up' # 1——8之間的數據 print(strmgs[1:8]) # 第3個字符到最後 print(strmgs[2:]) # 第1個字符到第3個 溫馨提示:記住左閉右開的原則 print(strmgs[:3]) # 步長是什麼?比如定義2,就是從當前開始到2個下標獲取一個字符,在通俗點就是隔一個獲取下一個 print(strmgs[::2]) # 負方向是倒序輸出,如果步長選為-1,則反方向輸出 print(strmgs[::-1]) # 同理,如果步長是-2,則反方向隔兩個下標獲取一個字符 print(strmgs[::-2]) # 共有方法有三種 + * in # +:兩個對象相加操作,會合並兩個對象 # *:對象自身按指定次數進行 + 操作 # in:判斷指定元素是否存在於對象中,輸出的是bool值 strA='I love' strB='Python' print(strA+strB) print(strA*3) print('I' in strA) '''輸出 <class 'str'> Test的一個字符串r r o d m a 1 r-o-d-m-a- - rodma Test的內存地址1863907131504 Test的內存地址1863907131504 rodma -1 0 True <class 'str'> I love python True False False I LOVE pYTHON I Love Python i love python I LOVE PYTHON ever gi ver give up Nev Nvrgv p pu evig reveN p vgrvN I lovePython I loveI loveI love True '''
二. 列表
list是一種有序的集合[],可以隨時添加和刪除其中的元素。
列表的下標取值/切片/是否越界與字符串一致,區別就是列表是獲取元素。
練習
li=[] # 空列表 li=[1,2,3,4,'python',True] print(type(li)) # #len函數可以獲取到列表對象中的數據個數 print(len(li)) # append();在列表後面追加元素 # count(): 統計元素出現的次數 # extend(): 擴展,相當於批量添加 # index(): 獲取指定元素索引號 # insert(): 在指定位置插入 # pop(): 刪除後面一個元素 # remove():移除左邊找到的第一個元素 # reverse(): 反轉列表 # sort():列表排序 reverse=True為倒序 listA=['abcd',785,12.23,'qiuzhi',True] # print('--------------增加-----------------------') print('追加之前',listA) listA.append(['fff','ddd']) #追加操作 listA.append(8888) print('追加之後',listA) listA.insert(1,'這是我剛插入的數據') #插入操作 需要執行一個位置插入 print(listA) rsData=list(range(10)) #強制轉換為list對象 print(type(rsData)) listA.extend(rsData) #拓展 等於批量添加 listA.extend([11,22,33,44]) print(listA) # print('-----------------修改------------------------') # print('修改之前',listA) # listA[0]=333.6 # print('修改之後',listA) listB=list(range(10,50)) print(type(listB)) print('------------刪除list數據項------------------') print(listB) # del listB[0] #刪除列表中第一個元素 # del listB[1:3] #批量刪除多項數據 slice # listB.remove(20) #移除指定的元素 參數是具體的數據值 listB.pop(1) #移除制定的項 參數是索引值 print(listB) #beg -- 開始索引,默認為0。 #end -- 結束索引,默認為字符串的長度。 print(listB.index(19)) #返回的是一個索引下標 # 查找,跟元祖有點不一樣,這是左開右閉 print(type(listA)) print(listA) #輸出完整的列表 print(listA[0]) #輸出第一個元素 print(listA[1:3]) #從第二個開始到第三個元素 print(listA[2:]) #從第三個元素開始到最後所有的元素 print(listA[::-1]) #負數從右像左開始輸出 print(listA*3) #輸出多次列表中的數據【復制】 a=[21,45,66,78] b=[1,2] def add100(x): i= 0 for item in x: x[i]=item+100 i+=1 pass return x pass print(add100(b)) def add100(x): x+=100 return x list2=list(map(add100,a)) print(list2) a=[21,45,66,78] print(list(map(lambda x:x+100,a))) def Old(x): if x>50: return x pass print(list(filter(Old,a))) '''輸出 <class 'list'> 6 追加之前 ['abcd', 785, 12.23, 'qiuzhi', True] 追加之後 ['abcd', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888] ['abcd', '這是我剛插入的數據', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888] <class 'list'> ['abcd', '這是我剛插入的數據', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44] <class 'list'> ------------刪除list數據項------------------ [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49] [10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49] 8 <class 'list'> ['abcd', '這是我剛插入的數據', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44] abcd ['這是我剛插入的數據', 785] [785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44] [44, 33, 22, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 8888, ['fff', 'ddd'], True, 'qiuzhi', 12.23, 785, '這是我剛插入的數據', 'abcd'] ['abcd', '這是我剛插入的數據', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 'abcd', '這是我剛插入的數據', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 'abcd', '這是我剛插入的數據', 785, 12.23, 'qiuzhi', True, ['fff', 'ddd'], 8888, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44] [101, 102] [121, 145, 166, 178] [121, 145, 166, 178] [66, 78] '''
三. 元組
- 元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,元組也是通過下標進行訪問
- 元組創建很簡單,隻需要在括號中添加元素,並使用逗號隔開即可。
- 元組的內置方法:
count
:統計元素在元組中出現的次數
index
:查找指定元素在元組中的下標索引
練習
#空元組 tupleA=() print(type(tupleA)) #元組也可以用for語句查詢 tupleA=(1,2,3,'cd','a') for item in tupleA: print(item,end=' ') # 元組也可以使用切片,左閉右開 print(tupleA[-2:-1:])#倒著取下標 為-2 到 -1 區間的 #假設元組中放入隊列 tupleA=(1,2,3,'cd','a',[11,22,33]) print(tupleA) #可以對隊列的值進行修改(原本元組是不可以修改的) print(type(tupleA[5])) tupleA[5][0]=5500 print(tupleA) tupleA[5].append('chen') print(tupleA) '''輸出 <class 'tuple'> 1 2 3 cd a ('cd',) (1, 2, 3, 'cd', 'a', [11, 22, 33]) <class 'list'> (1, 2, 3, 'cd', 'a', [5500, 22, 33]) (1, 2, 3, 'cd', 'a', [5500, 22, 33, 'chen']) '''
四. 字典
- 字典是Python的中重要的一種數據類型,可以存儲任意對像。
- 字典是以鍵值對的形式創建的
{'key':'value'}
利用大括號包裹著。 - 訪問值的安全方式get方法,在我們不確定字典中是否存在某個鍵而又想獲取其值時,可以使用get方法,還可以設置默認值
註意:
字典的鍵(key)不能重復,值(value)可以重復。
字典的鍵(key)隻能是不可變類型,如數字,字符串,元組。
常用方法
練習
# 空字典 dictA={} print(type(dictA)) # 如何添加字典數據? key:value dictA['name']='陳運智' dictA['age']=30 print(dictA) # 批量添加 dictA={"pro":'藝術','shcool':'北京電影學院','age':30,'pos':'xueshen'} print(dictA) # 通過鍵位修改值 dictA['pro']='學生' print(dictA) # 添加更多數據 dictA.update({'name':'陳運智'}) print(dictA) # 獲取所有鍵和值 print(dictA.keys(),dictA.values()) print(dictA.items()) for key,value in dictA.items(): print('%s==%s'%(key,value)) # 指定鍵刪除 del dictA['name'] print(dictA) # 按照key和value排序 print(sorted(dictA.keys())) #print(sorted(dictA.values())) #拷貝, copy,deepcopy 會拷貝復雜類型,如 list、dict import copy dictB=copy.copy(dictA)#淺拷貝 dictc=copy.deepcopy(dictA)#深拷貝 print(id(dictc)) print(id(dictA)) print(id(dictB)) dictB['age']='20' dictc['age']='20' print(dictB) print(dictc) print(dictA) print(type(dictB)) print(type(dictc))
以上就是python中必會的四大高級數據類型(字符,元組,列表,字典)的詳細內容,更多關於python數據類型的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- python3.9之你應該知道的新特性詳解
- 一篇文章帶你瞭解Java泛型的super和extends
- python基礎之共有操作
- Python中淺拷貝的四種實現方法小結
- Python學習之列表常用方法總結