Define un procedimiento, same_structure, que toma dos entradas. Debe mostrar True
si las listas tienen la misma estructura, y False
de lo contrario. Dos valores, p y q tienen la misma estructura si:¿Cómo encontrar dos listas con la misma estructura en python?
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.
EDIT: Para hacer que la imagen clara los siguientes son los resultados esperados
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
pensé recursividad sería mejor para solucionar este problema en Python he encontrado el siguiente código pero no funciona.
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
@SvenMarnach: a menos que esté leyendo mal la pregunta, [2, (3,4)] y [2, (5,)] tienen la misma estructura: son ambas listas, que tienen la misma número de elementos, y cada elemento de p tiene la misma estructura que el elemento correspondiente de q porque ninguno es una lista. IOW solo importa la estructura de la lista, los valores no (de modo que [2] y [3] también tienen la misma estructura). – DSM
Defina "misma estructura" para una lista que para python ['a', '1 '] no es igual a [' 1 ',' a ']. Tal vez sería mejor usar sets también. – KurzedMetal
En este contexto, aunque creo que * * diría que contienen los mismos elementos, donde la igualdad se define por la relación dada. Creo que tuve una pregunta como esta, en el día. – DSM