みんな、2つの入力(aとb)が同じデータ構造を持っているかどうかをテストする関数を次のように書きました:
print same_structure([1, 0, 1], [a, b, c])
#>>> True
#print same_structure([1, [0], 1], [2, 5, 3])
>>> False
#print same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['d', 'e']]]])
>>> True
#print same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['de']]]])
>>> False
この関数は (私の実装では) 再帰を使用する必要があります。私は再帰の初心者であり、再帰的に考えるのはまだ難しいです。さらに、答えをごまかすのを避けるために、私は自分の(乱雑な)コードを使用し、それを通じて再帰呼び出しの使用法を学びたいと思います(このコード行を使用:「same_structure return (a [i], b [e])」を適切に使用) )。誰かが以下のコードで再帰を適切に使用する方法を示すことができますか? 助けてくれてありがとう!!!
def is_list(p):
return isinstance(p, list)
def same_structure(a,b):
if not is_list(a) and not is_list(b):
print '#1'
return True
else:
if is_list(a) and is_list(b):
print '#2'
if len(a) != len(b):
print '#3'
return False
if len(a) == len(b):
print '#4'
for e in range(len(a)):
print 'e = ', e, 'a[e]= ', a[e], 'b[e]=', b[e]
return same_structure(a[e], b[e])
else:
return False