0724 遞迴函式

2021-09-25 14:02:09 字數 4703 閱讀 9918

在乙個函式體的內部,呼叫函式本身,就被稱為遞迴函式

def

func

(n):

print

(n)if

int(n/2)

==0:return n

return func(

int(n/2)

)print

(func(10)

)1052

1

用遞迴函式寫1,1,2,3,5,8

def

fibonacci

(n):

if n ==1:

return

1if n ==2:

return

1else

:return fibonacci(n-1)

+ fibonacci(n-2)

print

(fibonacci(6)

)

lambda para1, para2,..

., paran : expression using paras

高階函式:把乙個函式名,以實參的形式,傳遞給這個函式的形參,這個函式就成為高階函式

def

add(a, b, c)

:return c(a)

+ c(b)

a_value = add(9,

1,abs)

print

(a_value)

# 10

defpow

(x):

return x**

2def

add(a, b, func)

:return func(a)

+ func(b)

a_value = add(-9

,1,pow

)print

(a_value)

# 82

f1 =

filter

(lambda sr:

not sr.endswith(

'ty'

),li)

功能:-

呼叫格式:

li =

['zhejiang'

,'university'

,'city'

,'college'

]ret =

for i in li:

ifnot i.startswith(

'c')

:print

(ret)

# ['zhejiang', 'university']

li =

['zhejiang'

,'university'

,'city'

,'college'

]def

filter_test

(para)

: ret =

for i in li:

ifnot i.startswith(

'c')

:return ret

print

(filter_test(li)

)# ['zhejiang', 'university']

li =

['zhejiang'

,'university'

,'city'

,'college'

]def

start_sr

(sr)

:return sr.startswith(

'c')

defend_sr

(sr)

:return sr.endswith(

'ty'

)def

filter_test

(func, para)

: ret =

for i in para:

ifnot func(i)

:return ret

print

(filter_test(start_sr, li)

)print

(filter_test(end_sr, li)

)# ['zhejiang', 'university']

# ['zhejiang', 'college']

功能:

map

(function,iterable1,iterable2)

li=[1

,2,3

,4,5

]res=

map(

lambda x:x+

1,li)

print

(list

(res)

)# [2, 3, 4, 5, 6]x=[

1,2,

3,4,

5]y=[

2,3,

4,5,

6]res=

map(

lambda x,y:x*y +

2,x,y)

print

(list

(res)

)# [4, 8, 14, 22, 32]x=[

1,2,

3,4,

5]y=[

2,3,

4,5,

6]deff

(x,y)

:return x*y+

2res=

map(f,x,y)

print

(list

(res)

)# [4, 8, 14, 22, 32]

格式

from functools import

reduce

y =[2,

3,4,

5,6]

z =reduce

(lambda x, y: x+y, y)

print

(z)# 20 (2+3+4+5+6)

from functools import

reduce

y =[2,

3,4,

5,6]

z =reduce

(lambda x, y: x*y, y)

print

(z)# 720 階乘

from functools import

reduce

y =[2,

3,4,

5,6]

z =reduce

(lambda x, y:

10*x+y, y)

print

(z)# 23456

import numpy as np

import pandas as pd

a = np.random.randint(low=

0, high=

4, size=(2

,4))

print

(a)data = pd.dataframe(a)

print

(data)[[

1000

][01

30]]

0123

0100

0101

30

功能 注:

利用*號操作符,與zip相反,進行解壓。

格式zip(iterable1,iterable2,…)

a=[1

,2,3

]b=[4

,5,6

]c=[4

,5,6

,7,8

]ziptest1=

zip(a,b)

print

(list

(ziptest1)

)#[(1, 4), (2, 5), (3, 6)]a=[

1,2,

3]b=[

4,5,

6]c=[

4,5,

6,7,

8]ziptest1=

zip(b,a)

print

(list

(ziptest1)

)#[(4, 1), (5, 2), (6, 3)]

輸出1000內回文數

print

(list

(filter

(lambda x:

str(x)

==str

(x)[::

1],range(1

,1000))

))

test1=zip(a,b)

print(list(ziptest1))

#[(1, 4), (2, 5), (3, 6)]

a=[1,2,3]

b=[4,5,6]

c=[4,5,6,7,8]

ziptest1=zip(b,a)

print(list(ziptest1))

#[(4, 1), (5, 2), (6, 3)]

```python

輸出1000內回文數

print(list(filter(lambda x: str(x) == str(x)[::1], range(1, 1000))))

蘇嵌 楊帥 0724

蘇嵌 專案實戰 學習日誌 姓名 楊帥 日期 0724 今日學習任務 數理掌握鍊錶的所有操作 單鏈表 單向迴圈,雙向迴圈鍊錶 今日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量 1 鍊錶 解決陣列帶來空間利用的問題 鍊錶分為單鏈表,單向迴圈鍊錶,雙向鍊錶,雙向迴圈鍊錶,鍊錶還分帶表頭和不帶表...

蘇嵌 楊曼曼 0724

今日學習任務 掌握鍊錶的分類 掌握單向鍊錶 帶表頭,不帶表頭 今日任務完成情況 今日學習任務基本完成 1.掌握鍊錶的分類 單鏈表 雙鏈表 單向迴圈鍊錶 雙向迴圈鍊錶 2.掌握單向鍊錶 帶表頭,不帶表頭 3.寫乙個鍊錶的步驟 定義節點型別 定義頭指標 初始化指標 插入新節點 今日開發中出現的問題彙總 ...

0724迴圈巢狀和while語句

一.for的迴圈巢狀 for迴圈的巢狀 列印矩陣 for int k 1 k 5 k console.writeline 請輸入乙個正整數 根據這個數列印這個數的行列的在右下角的三角形 請輸入乙個正整數 int b int.parse console.readline for int i 1 i b...