<jupyter_start><jupyter_text>Programación Data Science  Ejercicio 1Definid una función que pueda recibir un número de parámetros cualquiera, superior a 1, y que devuelva el resultado de sumar el resultado de aplicar la función que recibe como primer parámetro a cada uno de los otros parámetros.Por ejemplo, si la función recibe como primer argumento una función que calcula cuadrados, como segundo argumento un 5, y como tercer argumento un 10, debería devolver $5^2 + 10^2 = 125$Llamad a la función definida con los valores del ejemplo mencionado en el enunciado, y comprobad que se obtiene el resultado correcto. Comprobad también que la función devuelve los resultados esperados para una llamada con dos argumentos y con cinco argumentos.<jupyter_code>from functools import reduce
## Respuesta
def suma(*args):
    sumado = reduce(lambda x,y: x**2+y**2, args)
    return sumado
suma(5,10)
suma(1,2,3,4,5)
def cuad(n):
    return n**2

def ejercicio1(fun,*args):
    suma=0
    for i in args: 
        suma+=fun(i)
    return suma
def ejercicio_1(*args):
    cuadrado = map(lambda x: x**2, args)
    return reduce(lambda x,y: x+y, cuadrado)

ejercicio_1(5,10)<jupyter_output><empty_output><jupyter_text>Ejercicio 2Definid una función que reciba dos parámetros, una lista de enteros y un entero, y devuelva una lista con los mismos elementos que la lista original eliminando todas las apariciones del entero especificado. Implementad una función que modifique la lista original. Haced una llamada a la función definida y mostrad que, efectivamente, la lista original se modifica.<jupyter_code>## Respuesta
def undefined(int_list,inte):
    int_list = list(filter(lambda x: x!= inte,int_list))
    return int_list

print(undefined([1,2,2,3,4,4,5,5,5,6],5))

# Marco en este apartado no se si lo entiendo bien. Porque para que la lista original se
# modifique necesito asignar la nueva lista a la lista original y la manera que se me ha 
# ocurrido es metiendo la lista directamente en la función, pero no se si es correcto.<jupyter_output>[1, 2, 2, 3, 4, 4, 6]<jupyter_text>Ejercicio 3Implementad una función que no modifique la lista original. Haced una llamada a la función definida y mostrad que, efectivamente, no se modifica la lista original.<jupyter_code>## Respuesta
lista = [1,2,2,3,4,4,5,5,5,6]

def undefined(int_list,inte):
    int_list = list(filter(lambda x: x!= inte,int_list))
    return int_list

print(undefined(lista,5))
print(lista)<jupyter_output>[1, 2, 2, 3, 4, 4, 6]
[1, 2, 2, 3, 4, 4, 5, 5, 5, 6]
{'fraction_non_alphanumeric': 0.08290360967869893, 'fraction_numerical': 0.0317334391114637, 'mean_word_length': 5.01909307875895, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '343948', 'license': 'MIT', 'n_tokens_mistral': 918, 'n_tokens_neox': 899, 'n_words': 333, 'path': '02_PYTHON/week07/pra/sol/07c_python_funciones.ipynb', 'repo_name': 'fersaol/The_Bridge_DataScience_PT_ALUMNI_feb22', 'size': '2521'}