springboot admin 監控搭建
阿新 • • 發佈:2022-03-18
今日總結
- 三元表示式
- 各種生成式
- 匿名函式
- 常見重要內建函式
- 常見內建函式
三元表示式
# 三元表示式一般是出現在那種二選一的情景下,比方說比較兩個數的大小,還有單if分支判斷。 eg: # 一般函式: 如果使用者是jason,則列印管理員,否則列印DSB username = input('username>>>:').strip() if username == 'jason': print('管理員') else: print('DSB') # 三元表示式: username = input('username>>>:').strip() res = '管理員' if username == 'jason' else 'DSB' print(res) # 值1 if 條件 else 值2 條件如果成立的話就使用值1(if前面的資料) 條件如果不成立的話就使用值2(else後面的資料) # 三元表示式最好不要巢狀使用,因為程式碼的前提就是簡潔易讀
各種生成式(目的就是為了簡化程式碼)
# 1.列表生成式 主要目的就是簡化程式碼 eg: name_list = ['jason','kevin','tony','oscar','jerry'] '將列表中所有的名字後面加上_DSB' # 列表生成式:res = [name+'_DSB' for name in name_list] # print(res) 列表生成式複雜用法具備篩選能力 res = [name'_DSB' for name in name_list if name == 'jason'] print(res) res = [name'_DSB' for name in name_list if name !== 'jason'] print(res) # 操作流程是:1.先讀取中間for name in name_list(相當於for迴圈列表),2.第二步就是判斷if name == 'jason',最後再看前面的需求name'_DSB'. # 列表生成式中值允許出現for和if,不能出現else,因為會產生歧義,for和if都能結合else # 2.字典生成式 eg: l1 = ['name','age','pwd'] l2 = ['jason',18,123] 將上述兩個列表分別製作成字典的鍵值對 res = {l1[i]: l2[i] for i in range(len(l1))} paint(res) # i代表元素,就是將l1與l2列表中的元素按元素所處的位置一一對應,組成鍵值對 # res = {'name': 'jason', 'age': 18, 'pwd': 123} res = {l1[i]:l2[i] for i in range(len(l1)) if i == 1} print(res) # 先將l1與l2列表組合成字典,然後再索引取值取字典裡的1 # res = {'age': 18} # 3.集合生成式 res = {i for i in range(10)} print(res) # 依次列印0-9,因為顧頭不顧尾 res = {i for i in range(10) if i != 2} print(res) # 依次列印除了2的0-9的數字
匿名函式
# 匿名函式就是指函式沒有函式名,需要結合其它函式一起使用 eg: lambda x:x+2 # 普通函式 def index(x): return x + 2 # 匿名函式 print(lambda x:x+2) # max:統計最大值 l1 = [1,2,12,3,4,34,5,6,56,7,8,78,9,0,90,99] print(max(l1)) # 直接獲取資料集中最大的值 # print(max())只能用於數字集合,如果遇上字典的話,只會預設獲取K值,而且如果K值是字串的英文字母的話,那麼它就會按照ASCII碼錶轉成與其字母對應的數字比較比較,那樣子是不準確的,所以字典的統計最大值的程式碼是: print(max(info,key=lambda key:info[key])) #拆解成普通函式就是: def index(k): return info[k] print(max(info,key=index)) # key對應的函式返回什麼,max就以什麼做比較的依據,比較的是v,返回的是k,key相當於是可以更改比較規則的引數
常見重要內建函式
# 1.map對映
l1 = [11,22,33,44,55]
需求:元素全部加10
def index(n):
return n + 10
res = map(index,l1)
print(list(res)) # 不能寫print(res),因為返回出來之後是一個列表
# 匿名函式:res = map(lambda x: x + 10, l1)
print(list(res))
# 2.zip拉鍊
l1 = [11,22,33,44]
l2 = ['a','b','c','d']
需求:將兩個列表中的元素一一對應成對
res = zip(l1,l2)
print(list(res))
# zip能夠整合多個數據集,如果資料集裡面的元素個數不一致時,就依據元素個數少的整合
# 整合的話也可以使用列表生成式:
res = [(l1[i],l2[i]) for i in range(len(l1))]
print(res)
# 3.內建函式之filter過濾
l1 = [10,20,30,40,50]
需求:篩選出大於25的元素
def index(x):
return x > 25
res = filter(index,l1)
print(list(res))
# 匿名函式:res = filter(lambda x:x>25,l1)
print(list(res))
# 4.reduce歸總
l1 = [1,2,3,4]
需求:將列表中所有的元素相加
# 普通函式
def index(x,y):
return x + y
res = reduce(index,l1)
print(res)
# 匿名函式:res = reduce(lambdax,y: x + y, l1)
print(res)
常見內建函式
# 1.abs():獲取絕對值,不管正負數
# 2.all()與any()
l1 = [0,1,0,1,1,0,1,True]
print(all(l1)) # 結果是False,表示資料集中必須所有的元素對應的布林值為True,返回的結果才是True
print(any(l1)) # 結果是True,表示資料集中只要有元素對應的布林值為True,返回的結果就是True
# 3.bin(),oct(),hex():產生對應的機制數
# print(bin(100)) #0b1100100
# print(oct(100)) #0o144
# print(hex(100)) #0x64
# 4.bytes():型別轉換,就是任意資料型別轉二進位制
# 針對編碼與解碼,可以使用關鍵字encode與decode,也可以使用bytes和str
# 5.callable():判斷當前物件是否可以加括號呼叫
eg: name = 'a'
def index():
pass
print(callable(name)) # 結果是False,變數名不能加括號呼叫
print(callable(index)) # 結果是True,函式名可以加括號呼叫
# 6.chr(),ord():字元與數字的對應轉換,依據ASCII碼
print(chr(65)) # A 根據數字轉字元
print(ord('A')) # 65 根據字元轉數字
# 7.dir() 返回資料型別可以呼叫的內建方法(檢視物件內部可呼叫的屬性)
print(dir(123))
print(dir('jason'))
# 8.divmod:相當於是數學裡的進一法,只要有餘數就進一
print(divmod(250,25))
結果是(10,0),第一個引數是整數部分,第二個是餘數部分
eg:def get_page_num(total_num,page_num): # 後面django分頁器使用
more,others = divmod(total_num, page_num)
if others:
more += 1
print('需要%s頁'%more)
# 9.enumerate() :列舉
name_list = ['a','b','c','d']
for name in name_list:
print(name)
# 列舉:for i, j in enumerate(name_list):
print(i,j) # i類似於是計數,預設從0開始
for i,j in enumerate(name_list,start=1):
print(i,j) # 控制起始位置
# 10.eval(),exec():識別字符串中的python程式碼
# eval(res)只能識別簡單的邏輯python程式碼
# exec(res)能夠識別具有一定邏輯的Python程式碼