一、內建函式
下面簡單介紹幾個:
1.abs() 求絕對值
2.all() 如果 iterable 的所有元素都為真(或者如果可迭代為空),則返回true
3.any() 如果 iterable 的任何元素為真,則返回true
。如果iterable為空,則返回false
4.callable() 如果 object 引數出現可調,則返回true
,否則返回false
5.divmod() 以兩個(非複數)數字作為引數,並在使用整數除法時返回由商和餘數組成的一對數字。對於混合運算元型別,二進位制算術運算子的規則適用。對於整數,結果與(a//b,a%b)
相 同。對於浮點數,結果為(a%b,q)
,其中q 通常為math.floor(a/b)
,但可以小於1
6.enumerate() 引數必須是可迭代物件,函式執行結果得到乙個迭代器,輸出元素及對應的索引值
7.eval() 把字串中的提取出來執行
8.frozenset() 不可變集合,frozenset()定義的集合不可增刪元素
9.globals() 返回表示當前全域性符號表的字典。這始終是當前模組的字典(在函式或方法內部,這是定義它的模組,而不是從其呼叫它的模組)
10.round() 對引數進行四捨五入
11.sorted() 排序,不改變原列表
l=[1,2,4,9,-1]12.zip() 拉鍊函式print(sorted(l)) #
從小到大
print(sorted(l,reverse=true)) #
從大到小
它接受一系列可迭代的物件作為引數,將物件中對應的元素打包成乙個個tuple(元組),然後返回由這些tuples組成的list(列表)。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。利用*號操作符,可以將list unzip(解壓)
a=[1,2,3]加乙個*就可以解壓b=['
a','
b','c'
]print(list(zip(a,b)))#------->[(1, 'a'), (2, 'b'), (3, 'c')]
#因為在python3中zip函式生成的是乙個可迭代物件,所以,加乙個list可以方便的列印出來,否則列印的是乙個物件
a=[1,2,3]13.max()b=['
a','
b','c'
]c=list(zip(a,b))
d=zip(*c)
print(list(d))#
[(1, 2, 3), ('a', 'b', 'c')]
返回可迭代的最大項或兩個或更多引數中最大的乙個。
如果提供了乙個位置引數,它應該是乙個 iterable。返回迭代中的最大項。如果提供了兩個或多個位置引數,則返回最大的位置引數。
max()可以指定key(也就是指定要比較的部分)
14.map() 對映
返回乙個迭代器,它應用 function 到 iterable 的每個專案,產生結果
l=[1,2,3,4]15.reduce() 合併m=map(lambda x:x**2,l)
print(list(m)) ----->[1, 4, 9, 16]
from functools import reduce16.filter() 過濾 保留布林值為true的元素def multi(x,y):
return x*y
a = reduce(multi,[1,2,3,4,5])
print(a)#120 五個數相乘的結果
names=['a詳細的內建函式介紹可以參照以下:_sb','
b_sb
','c_sb
','d']
print(list(filter(lambda name:name.endswith('
_sb'),names)))--->['
a_sb
', b_sb
', '
c_sb
']
17.compile()編譯,將乙個字串編譯為位元組**
語法:
compile(source, filename, mode[, flags[, dont_inherit]])引數介紹
source --字串或者ast(abstract syntax trees)物件。。至少要有前三個引數,filename --**檔名稱,如果不是從檔案讀取**則傳遞一些可辨認的值。
mode -- 指定編譯**的種類。可以指定為 exec
, eval, single。
flags --變數作用域,區域性命名空間,如果被提供,可以是任何對映物件。。
flags和dont_inherit是用來控制編譯原始碼時的標誌
>>> compile('二、匿名函式(lambda表示式)a','','
exec')
at 0x00000242a1c28030, file "", line 1>
deflambda函式自帶返回值匿名函式只能取代一些很簡單的函式,主要與其他函式搭配使用func(x):
return x**2
print(func(2))
lambda x:x**2 #
上邊的函式就可以直接寫成這種形式
還有一種情況是有些函式定義後只使用一次就用不到了,如果不刪除的話會佔記憶體空間,刪除又會很麻煩,這時就可以用到匿名函式
三、遞迴
在呼叫乙個函式的過程中,直接或間接使用了函式本身
遞迴效率很低,需要在進入下一次遞迴時保留當前狀態,python不像其他語言,沒有尾遞迴,但是python有限制條件,不允許使用者無限遞迴
遞迴的特點:
1.必須要有乙個明確的結束條件
2.每次進入更深一層遞迴時,問題規模相比上次遞迴都應該有所減少
3.遞迴效率不高,遞迴層數過多會導致棧溢位
示例:
#1 檔案內容如下,標題為:姓名,性別,年紀,薪資##
egon male 18 3000
#alex male 38 30000
#wupeiqi female 28 20000
#yuanhao female 28 10000##
要求:#
從檔案中取出每一條記錄放入列表中,
#列表的每個元素都是的形式##
2 根據1得到的列表,取出薪資最高的人的資訊
#3 根據1到的列表,取出最年輕的人的資訊
#4 根據1得到的列表,將每個人的資訊中的名字對映成首字母大寫的形式
#5 根據1得到的列表,過濾掉名字以a開頭的人的資訊
#6 使用遞迴列印斐波那契數列(前兩個數的和得到第三個數)
#0 1 1 2 3 4 7...
with open(
'b.txt
',encoding='
utf-8
')as f:
l=[ \
for line inf]#
2.print(max(l,key=lambda i:i['
salary
']))#3.
print(min(l,key=lambda i:i['
age'
]))#
4.m=map(lambda x:x['
name
'].capitalize(),l)
(list(m))#5.
print(list(filter(lambda x:not(x['
name
'].startswith('a'
)),l)))#6.
deff(n):
if n==0:
return
0
elif n==1:
return 1
else
:
if n==1000:
return f(1000)
else
:
return f(n-2)+f(n-1)
for i in range(150):
print(f(i))
Python基礎之內置函式(一)
內建函式比較多,今天只記錄下一部分吧。abs 求絕對值 abs 10.1 10.1 all 全部為真才是真,引數是可迭代的 all 12,3,4,5,none false any 任意為真,就為真 any 12,3,4,5,none true bool 布林值 bool 1 true bool 0 ...
python之內置函式
非空即真,非0即真 記住這句話可以讓你少寫好多 l asdfgwert3r 1 sorted l 排序 字串可以直接使用sorted排序 2 all 如果list裡面都為真的情況返回為 true all 1 2,3 4 print true all 1 2,3 0 print false all 1...
python之內置函式
它將兩個 非複數 數字作為實參,並在執行整數除法時返回一對商和餘數。對於混合運算元型別,適用雙目算術運算子的規則。對於整數,結果和 a b,a b 一致,分別對應取整數和取餘數 對於浮點數,結果是 q,a b q 通常是 math.floor a b 但可能會比 1 小。如 將153拆解 a,b d...