python筆記6 函式基礎2

2021-09-24 16:23:31 字數 2014 閱讀 1011

接收乙個或多個函式作為輸入

return返回另乙個函式

def add(x, y, f):

return f(x) + f(y)

def get_abs(n):

return int(str(n).strip('-'))

print(add(5, -10, get_abs))

def calc(n):

print(n)

n = int(n/2)

if n > 0:

calc(n)

print(n)

calc(100)

遞迴二分查詢

2個引數

a = [1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107]

def split_find(n, a):

if len(a) == 1:

if a[0] == n:

print('%s is in the list' % n)

else:

print('not exists')

mid_index = len(a) // 2

mid_value = a[int(len(a) // 2)]

if n == mid_value:

print('%s is in the list' % n)

return

if n > mid_value:

# print('>')

a = a[mid_index:]

if n < mid_value:

# print('<')

a = a[:mid_index]

split_find(n, a)

split_find(33, a)

print(a.index(33))

4個引數:

a = [1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107]

def binary_search(start,end,n,d_list):

"""每次把列表規模折半,查詢乙個資料最多隻需要2的n次方 < len(d_list),是2的多少次方,就是最多查多少次。

假如列表長度為200,那最多隻需查詢8次(2**8次方)

:param start: 查詢的起始位置

:param end: 查詢的結束位置

:param n: 要查詢的值

:param d_list: 要找的列表

:return:

"""if start < end: # 查詢的範圍[start:end]依然大於0個

mid = (start + end)//2 # 找到中間位置

if d_list[mid] > n: # 如果中間的這個值比要找的n大,代表要往d_list[mid]左邊找

print("go left",start,mid,end,"--",d_list[start],d_list[mid],d_list[end-1])

binary_search(start,mid,n,d_list)

elif d_list[mid] < n : # 要往右邊找,繼續折半

print("go right..",start,mid,end,"--",d_list[start],d_list[mid],d_list[end-1])

binary_search(mid+1,end,n,d_list)

else: # 找到了

print("find:",d_list[mid],mid)

else: # 假設start=9,end=9, 那d_list[9:9]已經取不到值了,在這種情況下,只能說明,要找的這個值不在這個列表裡

print("cannot find %s in this data list" % n)

binary_search(0, len(a), 22, a)

Python基礎筆記 函式2

1.定義 函式自己呼叫自己 2.形成條件 1 函式自己呼叫自己 2 必須有乙個終止條件 已知室內每人相差三歲,第乙個人18歲,求第6個人的年齡。定義函式 deftwo age n 6 判斷是否為第乙個人 if n 1 return 18 求第n個人的年齡,只需要n 1這人的年齡 2 再次呼叫函式tw...

python基礎筆記 6

物件導向 python是動態語言,可以給物件動態新增屬性和方法。魔法方法 str 物件的字串形式,print函式列印物件時,物件的 str 函式被呼叫,其返還的內容被列印。私有屬性和私有方法 以 開頭,在類外部不能直接使用 del 方法 物件被釋放 引用計數為0 時python直譯器自動呼叫 sys...

筆記 python基礎之內置函式2

reverse 反轉 reverse 反轉的迭代器,能保留原序列 l 1,2,3,4,5 l.reverse print l l 1,2,3,4,5 l2 reversed l print l2 保留原列表,返回乙個反向的迭代器 輸出 5,4,3,2,1 slice 切片規則 l 1,2,23,21...