目的是通過遞回添加兩個給定的串列。例如
[1,2,3] [4,5,6] = [5,7,9]
我得到一個
int object is not iterable
錯誤。
這是代碼:
def seqaddr(l1,l2):
if len(l1)==1:
l1[0]=l1[0] l2[0]
return l1
else:
return seqaddr(l1[:len(l1)-1],l2[:len(l2)-1]) list(l1.pop() l2.pop())
seqaddr([1,2,3],[4,5,6])
uj5u.com熱心網友回復:
您不能使用 將數字轉換為串列list(n)。您應該使用串列文字。更改以下行:
return seqaddr(l1[:len(l1)-1],l2[:len(l2)-1]) list(l1.pop() l2.pop())
到
return seqaddr(l1[:len(l1)-1],l2[:len(l2)-1]) [l1.pop() l2.pop()]
更新:您的函式改變了原始引數,這通常被認為是 Bad Thing?。冪等版本可以寫成:
def seqaddr(l1, l2):
if len(l1) == 1:
return [l1[0] l2[0]]
else:
return seqaddr(l1[:-1], l2[:-1]) [l1[-1] l2[-1]]
uj5u.com熱心網友回復:
Selcuk 對答案中最后一行代碼的進一步簡化
def seqaddr(l1,l2):
if len(l1)==1:
l1[0]=l1[0] l2[0]
return l1
else:
return seqaddr(l1[:-1],l2[:-1]) [l1.pop() l2.pop()]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344909.html
上一篇:斐波那契尾遞回背后的直覺
下一篇:Python-使用遞回實作二叉樹
