python常用內建方法
阿新 • • 發佈:2020-12-19
列表型別
型別轉換:但凡能被for迴圈遍歷的型別都可以當作引數傳給list()轉換成列表 例如: res = list("hello") print(res) ['h', 'e', 'l', 'l', 'o'] # 內建方法 1,按照索引存取值(正向存取+反向存取):即可以取也可以改 l = [111,'zyl','wyy'] l[0] = 222 print(l) # 可以取也可以改,索引存在則修改對應的值 l = [222,'zyl','wyy'] 但是無論取值操作還是賦值操作:索引不存在則報錯 如果想要在列表中追加值 l.append('yy') print(l) # .append在列表末尾追加一個值 l = [222,'zyl','wyy','yy'] 如果想在某一位置在列表中插入值 l.insert(0,'zz') print(l) # .insert在列表中按索引位置插入值 l = ['zz',222,'zyl','wyy','yy'] 如果想讓兩個列表的值放在一起 l = [111,'zyl','wyy'] ll = [1,2,3] l.extend(ll) print(l) # .extend在類表中新增另外一個列表 [111, 'zyl', 'wyy', 1, 2, 3] 刪除列表中的值 方法一: del l[0] print(l) # del 刪除索引中的值 方法二: l.pop() # 根據索引刪除列表中的值,不指定索引,預設刪除最後一個 pop方法會返回一個你刪除的元素 res = l.pop() print(res)9 print(l) 方法三: remove根據元素刪除 返回None l.remove('zyl') print(l) 計算列表中元素個數 l.len() 檢視列表中元素出現的次數 l.count() 查詢列表中元素所在的索引。沒有報錯 l.index() 清空列表中所有的元素 l.clear() # ()內不用傳值 將列表中元素倒過來 l.reverse() # ()也不用傳值,不是排序就是將列表倒過來 將列表中元素排序 ,列表中必須是同種型別才可以排序 l.sort() 預設從小到大排序 l.sort(reverse=True) # 從大到小排序,設定為降序
元組型別
# 元組就是一個”一個不可變的列表“ # 1,作用:按照索引位置存放多個值,只用於讀不用於改 # 2,定義:()內用逗號分隔開多個任意型別的元素 t =(1,1.1,'zyl',[111,222],{'name':'wyy'}) print(t,type(t)) (1, 1.1, 'zyl', [111, 222], {'name': 'wyy'}) <class 'tuple'> 如果元組內只有一個元素,必須加逗號 t(1,) print(t) 元組不能更改,但是可以改元組裡面列表和字典的值 例如 t =(1,1.1,'zyl',[111,222],{'name':'wyy'}) t[3][0] = 555 t[4][0] = 'aaa' print(t,type(t)) (1, 1.1, 'zyl', [555, 222], {'name': 'wyy', 0: 'aaa'}) <class 'tuple'> (參考深淺拷貝) 型別轉換: print(tuple("hellp")) print(tuple([1,2,3])) print(tuple({"a":111,"b":222})) ('h', 'e', 'l', 'l', 'p') (1, 2, 3) ('a', 'b') 內建方法 # 查長度 len() # 索引取值 t = ('zyl', 'wyy', 'yy', 'zz') print(t[0]) zyl # 切片(顧頭不顧尾,步長) t = ('zyl', 'wyy', 'yy', 'zz') print(t[1:3:2]) ('wyy',) # 成員運算 t = ('zyl', 'wyy', 'yy', 'zz') print('zyl' in t) # zyl在不在t元組中 True # 迴圈 t = ('zyl', 'wyy', 'yy', 'zz') for name in t: print(name) zyl wyy yy zz # count() 檢視列表中元素出現的次數 t = ('zyl', 'wyy', 'yy', 'zz') print(t.count('zyl')) 1 # index() 查詢列表中元素所在的索引。沒有報錯 t = ('zyl', 'wyy', 'yy', 'zz') print(t.index('zyl')) 0
字典型別
字典型別: # 作用:存資訊,比如年齡,姓名,體重等 # 定義{}內用逗號分隔開多個key:value,其中value可以使任意型別,但是key必須是不可變型別 d = {"age":18} print(d['age']) 18 d ={} 預設定義出來的是空字典 # 資料型別轉換 # 1、按key存取值:可存可取 # 1.1 取 >>> dic = { 'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball'] } >>> dic['name'] 'xxx' >>> dic['hobbies'][1] 'basketball' # 1.2 對於賦值操作,如果key原先不存在於字典,則會新增key:value >>> dic['gender'] = 'male' >>> dic{'name': 'xxx', 'age': 18, 'hobbies': ['play game', 'basketball'],'gender':'male'} # 1.3 對於賦值操作,如果key原先存在於字典,則會修改對應value的值 >>> dic['name'] = 'zyl' >>> dic{'name': 'zyl', 'age': 18, 'hobbies': ['play game', 'basketball']} # 2、長度len >>> len(dic) 3 # 3、成員運算in和not in >>> 'name' in dic # 判斷某個值是否是字典的key True # 4、刪除 >>> dic.pop('name') # 通過指定字典的key來刪除字典的鍵值對 >>> dic{'age': 18, 'hobbies': ['play game', 'basketball']} # 5、鍵keys(),值values(),鍵值對items() >>> dic = {'age': 18, 'hobbies': ['play game', 'basketball'], 'name': 'xxx'} # 獲取字典所有的key >>> dict_keys = dic.keys() >>> print(dict_keys) dict_keys(['age', 'hobbies', 'name']) # 獲取字典所有的value >>> dic.values() >>> dict_values = dic.values() >>> print(dict_values) dict_values(['xxx', 18, ['play game', 'basketball']]) # 獲取字典所有的鍵值對 >>> dic.items() dict_items([('name', 'xxx'), ('age', 18), ('hobbies', ['play game', 'basketball'])]) # 6、迴圈 # 6.1 預設遍歷的是字典的key >>> for key in dic: ... print(key) ... age hobbies name # 6.2 只遍歷key >>> for key in dic.keys(): ... print(key) ... age hobbies name # 6.3 只遍歷value >>> for key in dic.values(): ... print(key) ... 18 ['play game', 'basketball'] xxx # 6.4 遍歷key與value >>> for key in dic.items(): ... print(key) ... ('age', 18) ('hobbies', ['play game', 'basketball']) ('name', 'xxx') 1.get() >>> dic= {'k1':'zyl','k2':'wyy','k3':'yy'} >>> dic.get('k1') 'zyl' # key存在,則獲取key對應的value值 >>> res=dic.get('xxx') # key不存在,不會報錯而是預設返回None >>> print(res) None >>> res=dic.get('xxx',666) # key不存在時,可以設定預設返回的值 >>> print(res) 666 # ps:字典取值建議使用get方法 2.pop() >>> dic= {'k1':'zyl','k2':'wyy','k3':'yy'} >>> v = dic.pop('k2') # 刪除指定的key對應的鍵值對,並返回值 >>> print(dic) >>> print(v) >>> {'k1': 'zyl', 'k3': 'yy'} >>> wyy 3.popitem() >>> dic= {'k1':'zyl','k2':'wyy','k3':'yy'} >>> item = dic.popitem() # 隨機刪除一組鍵值對,並將刪除的鍵值放到元組內返回 >>> print(dic) >>> print(item) {'k1': 'zyl', 'k2': 'wyy'} ('k3', 'yy') 4.update() # 用新字典更新舊字典,有則修改,無則新增 >>> dic= {'k1':'zyl','k2':'wyy','k3':'yy'} >>> dic.update({'k1':'zy','k4':'xxx'}) {'k1': 'zy', 'k2': 'wyy', 'k3': 'yy', 'k4': 'xxx'} 5.fromkeys() >>> dic = dict.fromkeys(['k1','k2','k3'],[]) # # 跟[],則value值為[],不跟,預設是None >>> print(dic) {'k1': [], 'k2': [], 'k3': []} 6.setdefault() # key不存在則新增鍵值對,並將新增的value返回 >>> dic={'k1':111,'k2':222} >>> res=dic.setdefault('k3',333) >>> print(res) 333 >>> print(dic) # 字典中新增了鍵值對 {'k1': 111, 'k2': 222, 'k3': 333,} # key存在則不做任何修改,並返回已存在key對應的value值 >>> dic={'k1':111,'k2':222} >>> res=dic.setdefault('k1',666) >>> print(res) 111 >>> print(dic) # 字典不變 {'k1': 111, 'k2': 222}
集合型別
集合也可以存放多個值,但主要用於:去重、關係運算
"""
定義:在{}內用逗號分隔開多個元素,集合具備以下三個特點:
1:每個元素必須是不可變型別
2:集合內沒有重複的元素
3:集合內元素無序
"""
s = {1,2,3,4} # 本質 s = set({1,2,3,4})
""""""
注意1:列表型別是索引對應值,字典是key對應值,均可以取得單個指定的值,而集合型別既沒有索引也沒有key與值對應,所以無法取得單個的值,而且對於集合來說,主要用於去重與關係元素,根本沒有取出單個指定值這種需求。
注意2:{}既可以用於定義dict,也可以用於定義集合,但是字典內的元素必須是key:value的格式,現在我們想定義一個空字典和空集合,該如何準確去定義兩者?
d = {} # 預設是空字典
s = set() # 這才是定義空集合
""""""
# 型別轉換
但凡能被for迴圈的遍歷的資料型別(強調:遍歷出的每一個值都必須為不可變型別)都可以傳給set()轉換成集合型別
>>> s = set([1,2,3,4])
>>> s1 = set((1,2,3,4))
>>> s2 = set({'name':'zyl',})
>>> s3 = set('zyl')
>>> s,s1,s2,s3
{1, 2, 3, 4} {1, 2, 3, 4} {'name'} {'z', 'y', 'l'}
# 關係運算
我們定義兩個集合friends與friends2來分別存放兩個人的好友名字,然後以這兩個集合為例講解集合的關係運算
friends1 = {"zyl","wyy","yy","zz"}
friends2 = {"fzf","zht","yy","zz"}
# 1.合集(|):求兩個使用者所有的好友(重複好友只留一個)
print(friends1 | friends2)
{'yy', 'fzf', 'zht', 'wyy', 'zz', 'zyl'}
# 2.交集(&):求兩個使用者的共同好友
print(friends1 & friends2)
{'yy', 'zz'}
# 3.差集(-):
print(friends1 - friends2) # friends1獨有的好友
{'zyl', 'wyy'}
print(friends2 - friends1) # friends2獨有的好友
{'zht', 'fzf'}
# 4.對稱差集(^) # 去掉共有的好友
print(friends1 ^ friends2)
{'fzf', 'zyl', 'wyy', 'zht'}
# 5.值是否相等(==)
print(friends1 == friends2)
False
# 6.父集:一個集合是否包含另外一個集合
# 6.1 包含則返回True
print({1,2,3} > {1,2})
True
# 6.2 不存在包含關係,則返回False
print({1,2,3} > {1,3,4,5})
False
# 7.子集
print({1,2} < {1,2,3})
True
print({1,2} <= {1,2,3})
True
集合去重
# 1. 只能針對不可變型別
# 2. 集合本身是無序的,去重之後無法保留原來的順序
例如:
l = ['a', 'b', 1, 'a', 'a']
s=set(l) # 將列表轉成了集合
print(s)
{1, 'a', 'b'} # 將重複的a去除,排列無序
l_new=list(s) # 再將集合轉回列表
print(l_new)
['b', 'a', 1] # 去除了重複,但是打亂了順序
# 針對不可變型別,並且保證順序則需要我們自己寫程式碼實現,例如
l=[
{'name':'zyl','age':18,'sex':'male'},
{'name':'wyy','age':16,'sex':'male'},
{'name':'yy','age':20,'sex':'female'},
{'name':'aa','age':18,'sex':'male'},
{'name':'aa','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)
[{'name': 'zyl', 'age': 18, 'sex': 'male'},
{'name': 'wyy', 'age': 16, 'sex': 'male'},
{'name': 'yy', 'age': 20, 'sex': 'female'},
{'name': 'aa', 'age': 18, 'sex': 'male'}]
# 結果:既去除了重複,又保證了順序,而且是針對不可變型別的去重