我的問題基本上是這樣的:創建一個遞歸函數,它將嵌套列表作爲 參數,並返回其最大和最小元素之間的最小差異的子列表。Python - 創建一個遞歸函數
例如:函數返回[1,2]輸入[1,199,59],[1,2],[3,8]]
我搜索谷歌和計算器,但我不能找到這個具體的例子。
我想得到的幫助是迭代。我想,使用遞歸,迭代每個子列表(可以儘可能多)。我用for循環實現了這一點,但我無法通過遞歸方法掌握迭代的想法。
到目前爲止,我有這個:
def sublist(mylist):
if len(mylist) == 0:
return []
elif len(mylist) == 1:
return mylist
else:
a = (mylist[0][0]) - (mylist[0][-1])
if a < sublist(mylist[1:]):
return mylist[0]
sublist([[1,199,58],[1,2],[3,8]])
這部分(子列表(MYLIST [1:]))我知道顯然是錯誤的。我試圖將值a與mylist [1:]中的值進行比較。我希望在這裏提供很多建議。
更新時間:
def differences(mylist):
diff = max(mylist) - min(mylist)
return diff
def sublist(nestedlist):
if len(nestedlist) == 1:
return nestedlist[0]
else:
if differences(nestedlist[0]) < differences(sublist(nestedlist[1:])):
return nestedlist[0]
else:
return sublist(nestedlist[1:])
print(sublist([[1,199,59],[1,2],[3,8]]))
'「我搜索谷歌和計算器,但我無法找到這個特定的例如。「等等......所以你可能不得不寫**代碼,而不是拼接在一起的互聯網示例?!人*做*那? –
如果你可以迭代地做到這一點,你爲什麼要遞歸地做呢?也許精心製作一點點?或者顯示一些代碼? – qbit
@JonathonReinhart是的,我不得不寫代碼,這是我到目前爲止,我自己的:def子表(MYLIST): 如果len(MYLIST)== 0: 回報[] ELIF LEN(MYLIST)= = 1: 返回MYLIST 否則: A =(MYLIST [0] [0]) - (MYLIST [0] [ - 1]) 如果一個<子列表(MYLIST [1:]): 返回 子列表([[1,199,58],[1,2],[3,8]]) 我的邏輯是比較a的值和我從另一個嵌套列表中獲得的值,然後返回它。但這顯然是非常錯誤的,任何建議。 – Zulfi