リスト構造を比較することになっている関数を書き込もうとしています(値は無関心です)。問題は、等しくない2つのリストがありますが、True
実際にはそのelse
部分に入ったとしても、関数が返されることです。なぜ、何を間違えたのかわかりません。これが私のコードです:
def islist(p): #is p a list
return type(p)==type(list())
def ListeIsomorf(a,b):
if len(a)==len(b):
for i,j in zip(a,b):
if islist(i) and islist(j):
ListeIsomorf(i,j)
elif islist(i) or islist(j):
return(False)
return(True)
else:
print(a,"length from the list isn't equal",b)
return(False)
#example lists
ListeE = [[],[],[[]]]
ListeD = [[],[],[[]]]
ListeF = [[[],[],[[]]]]
ListeG = [[],[[]],[[]]]
ListeH = [1,[3]]
ListeI = [1,3]
#tests
print(ListeIsomorf(ListeD,ListeE)) # True
print(ListeIsomorf(ListeD,ListeF)) # False
print(ListeIsomorf(ListeD,ListeG)) # False
print(ListeIsomorf(ListeH,ListeI)) # False
したがって、問題は3番目でのみ発生しprint(ListeIsomorf(ListeD,ListeG)) # False
ます。それは実際にelse
パーツに入り、印刷します"length from the list isn't equal"
が、停止せず、を出力しませんreturn(False)
。私は何かが足りないのですか?