本文目錄一覽:
Python 實現遞歸
一、使用遞歸的背景
先來看一個☝️接口結構:
這個孩子,他是一個列表,下面有6個元素
展開children下第一個元素[0]看看:
發現[0]除了包含一些字段信息,還包含了 children 這個字段(喜當爹),同時這個children下包含了2個元素:
展開他的第一個元素,不出所料,也含有children字段(人均有娃)
可以理解為children是個對象,他包含了一些屬性,特別的是其中有一個屬性與父級children是一模一樣的,他包含父級children所有的屬性。
比如每個children都包含了一個name字段,我們要拿到所有children里name字段的值,這時候就要用到遞歸啦~
二、find_children.py
拆分理解:
1.首先import requests庫,用它請求並獲取接口返回的數據
2.若children以上還有很多層級,可以縮小數據範圍,定位到children的上一層級
3.來看看定義的函數
我們的函數調用:find_children(node_f, ‘children’)
其中,node_f:json字段
children:遞歸對象
以下這段是實現遞歸的核心:
if items[‘children’]:
items[‘children’]不為None,表示該元素下的children字段還有子類數據值,此時滿足if條件,可理解為 if 1。
items[‘children’]為None,表示該元素下children值為None,沒有後續可遞歸值,此時不滿足if條件,可理解為 if 0,不會再執行if下的語句(不會再遞歸)。
至此,每一層級中children的name以及下一層級children的name就都取出來了
希望到這裡能幫助大家理解遞歸的思路,以後根據這個模板直接套用就行
(晚安啦~)
源碼參考:
如何使用Python的遞歸方法來實現組合數
def C(n,m):
if m n :
return 0
elif m == 1:
return n
elif n == 1:
return 1
else:
return C(n-1,m-1)+C(n-1,m)
print(C(5,1)) # 5
print(C(5,2)) # 10
print(C(5,3)) # 10
print(C(5,4)) # 5
print(C(5,5)) # 1
python 遞歸實現組合
用迭代器比較好
def combin(items, n=None):
if n is None:
n = len(items)
for i in range(len(items)):
v = items[i:i+1]
if n == 1:
yield v
else:
rest = items[i+1:]
for c in combin(rest, n-1):
yield v + c
for i in range(len([1,2,3,4])):
for j in combin([1,2,3,4], i+1):
print j,
原創文章,作者:FZEW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144096.html