Verificar si dos tuplas contienen los mismos valores [python]

Iniciado por bichotg, 21 Febrero 2012, 16:18 PM

0 Miembros y 1 Visitante están viendo este tema.

bichotg

Buenas :) !!

Haber como haríais esto vosotros, a mi no me sale, verifico si las tuplas son iguales, pero si los valores están en distinto orden ya no se como hacerlo

CitarWrite a function hasSameContent(t1, t2) that takes in two tuples as arguments and return True if both tuples contain the same items.

Examples

    >>> hasSameContent((1, 2), (1, 2))
    True
    >>> hasSameContent((1, 2), (2, 1))
    True
    >>> hasSameContent((1, 2), (1, 2, 1))
    False
    >>> hasSameContent((1, 2), ())
    False


Saludos

Jirp96

Hola!
A mi me quedo así:
Código (python) [Seleccionar]

def hasSameContent(t1,t2):
if len(t1) != len(t2): #si la cantidad de elementos es diferente
return False
for cont in t1:
if not cont in t2: #si el elemento no se encuentra en la segunda tupla
return False
return True


Código (python) [Seleccionar]

>>> hasSameContent((1, 2), ())
False
>>> hasSameContent((1, 2), (1, 2, 1))
False
>>> hasSameContent((1, 2), (2, 1))
True
>>> hasSameContent((1, 2), (1, 2))
True


Saludos!
pd: de donde sacas esos ejercicios? :o

bichotg

Cita de: Jirp96 en 21 Febrero 2012, 17:59 PM
Hola!
A mi me quedo así:
Código (python) [Seleccionar]

def hasSameContent(t1,t2):
if len(t1) != len(t2): #si la cantidad de elementos es diferente
return False
for cont in t1:
if not cont in t2: #si el elemento no se encuentra en la segunda tupla
return False
return True


Código (python) [Seleccionar]

>>> hasSameContent((1, 2), ())
False
>>> hasSameContent((1, 2), (1, 2, 1))
False
>>> hasSameContent((1, 2), (2, 1))
True
>>> hasSameContent((1, 2), (1, 2))
True


Saludos!
pd: de donde sacas esos ejercicios? :o

Buenas!!!

Buenas!!!

Gracias por tu respuesta,, me a servido para pasar del test, jeje porque las comprobaciones las hace sobre los ejemplos pero realmente creo que no esta bien del todo, porque se trata de Verificar si dos tuplas contienen los mismos valores, si enviáramos hasSameContent((1, 2), (1, 3)) nos daría un True y un False no?

los ejercicios son de la pagina http://www.pyschools.com/ si no la conoces mirala es muy buena.

Saludos!!

Novlucker

Si no los haces tu no tienen gracia ... me he pasado un rato resolviendo ejercicios de esa página :xD
Código (python) [Seleccionar]
def hasSameContent(t1, t2):
if len(t1)!=len(t2):
return False
return all([(x in t2) for x in t1])


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Novlucker

Y luego me di cuenta de que podía ser más corta :xD
Código (python) [Seleccionar]
def hasSameContent(t1, t2):
return all([(x in t2) for x in t1]) if len(t1)==len(t2) else False


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

WaAYa HaCK

Cita de: Novlucker en 23 Febrero 2012, 18:06 PM
Y luego me di cuenta de que podía ser más corta :xD
Código (python) [Seleccionar]
def hasSameContent(t1, t2):
return all([(x in t2) for x in t1]) if len(t1)==len(t2) else False



El A if C else B xD, aquel que no sé implementar...
La cacatúa yoyó es nueva en el zoo!