Я пытаюсь решить эту проблему в Python: «Напишите функцию, возвращающую True, если ее аргумент является массивом, имеющим те же структуры вложенности и ту же соответствующую длину вложенных массивов, что и первый массив».
Итак, я хочу сравнить 2 списка, проверить, являются ли их элементы списками, и если да, то проверить, являются ли элементы этих списков списками, и так далее, пока я не найду точку, где «оригинал» не соответствует «другое.
Пока что у меня есть:
def same_structure_as(original,other):
print(type(original))
print(type(other))
# if either, but not both of original and other are a list, return False
if (type(original) is list) != (type(other) is list):
print("not match")
return False
print()
if (type(original) is list):
for i in range(len(original)):
if (type(original[i]) is list):
same_structure_as(original[i],other[i])
return True
print(same_structure_as([ 1, [ 1, 1 ] ], [ 2, 5 ] ))
Однако проблема в том, что как только я добираюсь до« return False », он возвращает False только для этой итерации. Итак итерации выше этого по-прежнему будут возвращать True, давая следующий результат при запуске:
<class 'list'>
<class 'list'>
<class 'list'>
<class 'int'>
not match
True
, тогда как я хочу, чтобы вся программа завершилась и вернула False сразу после того, как будет напечатано «не соответствует» ...