2つの入力を受け取るプロシージャsame_structureを定義します。True
リストが同じ構造の場合は出力され
、それ以外の場合は出力されFalse
ます。次の場合、2つの値pとqは同じ構造になります。
Neither p or q is a list.
Both p and q are lists, they have the same number of elements, and each
element of p has the same structure as the corresponding element of q.
編集:画像を明確にするために、以下は期待される出力です
same_structure([1, 0, 1], [2, 1, 2])
---> True
same_structure([1, [0], 1], [2, 5, 3])
---> False
same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['d', 'e']]]])
---> True
same_structure([1, [2, [3, [4, 5]]]], ['a', ['b', ['c', ['de']]]])
---> False
Pythonでこの問題を解決するには再帰が最適だと思いました。次のコードを考え出しましたが、機能しません。
def is_list(p):
return isinstance(p, list)
def same_structure(a,b):
if not is_list(a) and not is_list(b):
return True
elif is_list(a) and is_list(b):
if len(a) == len(b):
same_structure(a[1:],b[1:])
else:
return False