Ejercicios de listas en python
Ejercicio de listas en python |
Buenas, dejo 8 ejercicios sobre listas en python para reforzar la entrada anterior, donde explico que son las listas y como utilizarlas con ejemplos: puedes verlo aquí: listas en python.
Ejercicio 1
Escriba una función que tome una lista de números y devuelva la suma acumulada, es decir, una nueva lista donde el primer elemento es el mismo, el segundo elemento es la suma del primero con el segundo, el tercer elemento es la suma del resultado anterior con el siguiente elemento y así sucesivamente. Por ejemplo, la suma acumulada de [1,2,3] es [1, 3, 6].
Ejercicio 2
Escribe una función llamada "elimina" que tome una lista y elimine el primer y último elemento de la lista y cree una nueva lista con los elementos que no fueron eliminados.
Luego escribe una función que se llame "media" que tome una lista y devuelva una nueva lista que contenga todos los elementos de la lista anterior menos el primero y el último.
Ejercicio 3
Escribe una función "ordenada" que tome una lista como parámetro y devuelva True si la lista está ordenada en orden ascendente y devuelva False en caso contrario.
Por ejemplo, ordenada([1, 2, 3]) retorna True y ordenada([b, a]) retorna False.
Ejercicio 4
A - Escribe una función llamada "duplicado" que tome una lista y devuelva True si tiene algún elemento duplicado. La función no debe modificar la lista.
B - Crear una función que genere una lista de 23 números aleatorios del 1 al 100 y comprobar con la función anterior si existen elementos duplicados. (Puedes ver el módulo random como guía)
Ejercicio 5
Escribe una función llamada "elimina_duplicados" que tome una lista y devuelva una nueva lista con los elementos únicos de la lista original. No tienen porque estar en el mismo orden.
Ejercicio 6
Escribe una función que lea las palabras de un archivo de texto (texto.txt) y construya una lista donde cada palabra es un elemento de la lista.
Ejercicio 7
Escribe una función llamada "inversa" que busque todas las palabras inversas de una lista.
Ejemplo de palabras inversas: radar, oro, rajar, rallar, salas, somos, etc...
Ejercicio 8
Para comprobar si una palabra está en una lista se puede utilizar el operador "in", pero sería una búsqueda lenta, ya que busca a través de las palabras en orden.
Debido a que las palabras están en orden alfabético, podemos acelerar las cosas con una búsqueda de bisección (también conocida como búsqueda binaria), que es similar a lo que haces cuando buscas una palabra en el diccionario. Comenzamos por el centro y comprobamos si la palabra que buscamos está antes o después del centro. Si está antes, se busca solo en la primera mitad, si está después se busca en la otra mitad de la lista. Con esto reduciremos el tiempo de búsqueda
Escribir una función llamada "bisect" que tome una lista ordenada y una palabra como objetivo, y nos devuelva el índice en el que se encuentra en la lista, en caso de no aparecer en la lista devuelve "No se encontró la palabra".
Para mejor ayuda, puede revisar el módulo bisect.
Saludos
-
-
Me alegro Ismael, tu fuiste unos de los primeros en conocer el blog y nunca podias verlo bine jaja. Saludos
-
jesucrissstoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
o
oo
o
o
oo
o
o
oo
o
oo
o
oo
o
o
oo
o
o
o
oo
o
oo
o
o
o
oo
o
o
oo
o
o
oo
o
o
oo
o
o
-
-
#!/usr/bin/env python
# -*- coding: utf-8 -*-def suma_acumulada():
lista = []
lista_nueva = []
suma = 0for i in range(5):
elem = input('dame numero: ')
lista.append(elem)print(lista)
for i in lista:
suma += int(i)
lista_nueva.append(suma)print(lista_nueva)
suma_acumulada()
-
#!/usr/bin/env python
# -*- coding: utf-8 -*-def elimina(lista):
valor = lista[0]
lista.remove(valor)
lista.pop()print(lista)
def media(lista):
nueva_lista = []for i in lista[0:len(lista)]:
nueva_lista.append(i)print(nueva_lista)
def dame_lista():
lista = []for i in range(10):
elem = input('Dame elemento: ')
lista.append(elem)print(lista)
return lista
lista = dame_lista()
elimina(lista)
media(lista) -
#!/usr/bin/env python
# -*- coding: utf-8 -*-import random
def genera_lista():
lista = []for i in range(23):
elem = random.randrange(1, 100)
lista.append(elem)print(lista)
return lista
def elimina_duplicados(lista):
nueva_lista = []for i in lista:
if i not in nueva_lista:
nueva_lista.append(i)print(nueva_lista)
lista = genera_lista()
elimina_duplicados(lista)-
from random import randrange
def randomize():
l = []
for x in range(1,23):
l.append(randrange(1,101))
return l
def duplicado(lista):
for i in range(1,len(lista)):
if lista[i-1] in lista[i:]:
return True, lista[i-1]
break
return False
def elimina_duplicados(lista):
l = True
while l:
l = duplicado(lista)
if l:
lista.remove(l[1])
print(l)
return listar = randomize()
print(r)
print(elimina_duplicados(r))
-
-
#!/usr/bin/env python
# -*- coding: utf-8 -*-def leer_archivo_txt():
f = open('texto.txt')
print('archivo: ', f.name)arch = f.read()
crea_lista(arch)
f.close()
print('cerrado? ', f.closed)def crea_lista(archivo):
lista_palabras = []
letras = 'qwertyuiopasdfghjklñzxcvbnmQWERTYUIOPASDFGHJKLÑZXCVBNM'
palabra = ''for l in archivo:
if l in letras:
palabra += l
elif palabra != '':
lista_palabras.append(palabra)
palabra = ''print(lista_palabras)
leer_archivo_txt()
-
#!/usr/bin/env python
# -*- coding: utf-8 -*-def leer_archivo_txt():
f = open('texto.txt')
print('archivo: ', f.name)arch = f.read()
lista = crea_lista(arch)
busca_inversa(lista)
f.close()
print('Archivo cerrado?: ', f.closed)def crea_lista(archivo):
lista_palabras = []
letras = 'qwertyuiopasdfghjklñzxcvbnmQWERTYUIOPASDFGHJKLÑZXCVBNM'
palabra = ''for l in archivo:
if l in letras:
palabra += l
elif palabra != '':
lista_palabras.append(palabra)
palabra = ''print(lista_palabras)
return lista_palabras
def busca_inversa(lista):
for nombre in lista:
inversa = ''
long = len(nombre)
while long > 0:
inversa = inversa + nombre[long - 1]
long -= 1if nombre == inversa:
print(nombre)leer_archivo_txt()
-
ejercicio 4a.
l = [1,2,3,4,5, 2, 7]def Duplicados(lista):
lista1 = list(set(lista))m = len(lista)
n = len(lista1)if m == n:
return True
else:
return Falseprint Duplicados(l)
-
mi solucion del 8
lista = ['oro','javier','menem','carlos','almeyda','distraccion','pruebas','mascomplejas']
def biscet (lista,busqueda):
listaordenada = sorted(lista)z=True
while True:mitad = (len(listaordenada))/2
if busqueda == listaordenada[mitad]:
return 'Puesto %r' % lista.index(busqueda)if busqueda[0] >= listaordenada[mitad][0]:
listaordenada = listaordenada[mitad:mitad*2]else:
listaordenada = listaordenada[0:mitad]if len(listaordenada) < 2:
if listaordenada[0] == busqueda:
return 'Puesto %r' % lista.index(busqueda)
else:
return 'No esta en la lista'print biscet (lista,'almeyda')
print biscet (lista,'pruebas')
print biscet (lista,'calzon')-
Hola lucas, probe el codigo pero si a la lista le agrego un elemento mas la palabra "pruebas" no la encuentra.-
Yo lo pense de esta forma.-
def bisect(lista, objetivo):
lista_nueva = listawhile True:
medio = len(lista_nueva)/2
if objetivo == lista_nueva[medio]:
return lista.index(objetivo)
elif objetivo[0] < lista_nueva[medio][0]:
lista_nueva = lista_nueva[:medio]
medio /= 2
else:
lista_nueva = lista_nueva[medio:]
if medio == 0:
return 'No esta en la lista'lista = ["adentro", "comprobar", "modificar", "objetivo", "palabra", "similar", "tiempo", "zorro"]
print bisect(lista, "palabra")
-
-
#Mi solucion al ejercicio 5
def elimina_duplicados(lista):
>>> i_guardada = None
>>> for i in sorted(lista):
>>>... if i == i_guardada:
>>>...... lista.remove(i)
>>>... i_guardada = i
>>> return lista
print elimina_duplicados([1,3,4,5,2,3,4,1,3,7,6,5,6,7,5,4]) -
Mi solucion al ejercicio 6, las palabras pueden incluir numeros, o caracteres no alfanumericos o sea cualquier caracter, y se toma como palabra cuando hay un espacio o un salto n o un tabulado t.
def listar_palabras(nombre_archivo):
>>> archivo = open(nombre_archivo)
>>> lineas = archivo.readlines()
>>> archivo.close()>>> lista_lineas_nuevas = []
>>> lista_regresada = []>>> for linea in lineas:
>>>...> if linea.endswith("n"):
>>>...>...>lista_lineas_nuevas.append(linea[:len(linea) - 1:])
>>>...> else:
>>>...>...> lista_lineas_nuevas.append(linea)>>> for cadena in lista_lineas_nuevas:
>>>...> try:
>>>...>...> if nueva_cadena != "":
>>>.>>>
>>>...>...>...>lista_regresada.append(nueva_cadena)
>>>...> except:
>>>...>...> pass
>>>...> nueva_cadena = ""
>>>...> for letra in cadena:
>>>...>...> if letra != " ":
>>>...>...>...> nueva_cadena += letra
>>>...>...> else:
>>>...>...>...>lista_regresada.append(nueva_cadena)
>>>...>...>...> nueva_cadena = ""
>>> return lista_regresadaprint listar_palabras("text.txt")
-
En la línea 19 desde el inicio del programa (def listar_palabras(nombre_archivo):) está ">>>.>>>", eso es un error y no va.
El sangrado/indentado:
Un sangrado: >>>
Dos sangrados: >>>...>
Tres sangrados: >>>...>...>
Cuatro sangrados: >>>...>...>...> -
Muy bueno. Saludos 😉
-
-
# ejercicio 1
def sumaAcumulada(lista):
aux = 0
Nlista = []
Nlista.append(lista[0])
aux = aux + lista[0]
for i in lista[1:]:
aux = aux + i
Nlista.append(aux)
return Nlistatabla = []
for i in range(5):
num = input("dame numero: ")
tabla.append(num)print sumaAcumulada(tabla)
-
# ejercicio 3
def menorAmayor(lista):
for i in range(len(lista)-1):
if lista[i]>lista[i+1] :
return False
return Truedef mayorAmenor(lista):
for i in range(len(lista)-1):
if lista[i]<lista[i+1] :
return False
return Truedef ordenada( lista ):
if menorAmayor(lista)==True :
return True
elif mayorAmenor(lista)==True:
return False
else :
return "no esta ordenado "print ordenada([10,9,8,7])
-
Algún consejo para comprender más el uso del software?
-
si en clickedu estan la soluciones
-
-
Este comentario ha sido eliminado por el autor.
-
Mi solucion al ejercicio 6.-
def leer(nombre_archivo):
lista = []
palabra = ""
archivo = open(nombre_archivo, "r")
datos = archivo.read()
archivo.close()
for i in datos:
if (not i == " ") and (not i == "n"):
palabra += i
else:
lista.append(palabra)
palabra = ""
return listaprint leer("prueba.txt")
-
EL PRIMERO, LE HE AÑADIDO UN PELIN DE CHICHA.
def sumalistas():
longitud=int(input("INTRODUZCA LA LÓNGITUD QUE QUIERE QUE TENGA LA LISTA "))
lista=[]
nuevalista=[]for i in range(0,longitud):
lista.append(i+1)for i in range(0,len(lista)):
if i==0:
nuevalista.append(lista[i])
else:
nuevalista.append(nuevalista[i-1]+lista[i])print("nPARA LA LISTAn", lista, "nEL RESULTADO SERÍAn", nuevalista)
sumalistas()
-
MUCHISIMAS GRACIAS, NO SE SI ES ESTO LO QUE ESPERABAS QUE HICIERA:
lista=["CASA", "ELEFANTE", "GIGANTE", "ARBOL", "ORDENADOR", "UNICORNIO"]
lista2=["CASA", "ELEFANTE", "GIGANTE", "ARBOL", "ORDENADOR", "UNICORNIO"]def elimina(lista):
lista.remove(lista[0])
lista.pop()
return listadef media(lista2):
medialista=[]
for i in range(1,len(lista2)-1):
medialista.append(lista2[i])return medialista
nuevalista=elimina(lista)
-
SOLUCIÓN PARA EL CUARTO:
import random
def compruebarepes():
listanum=[]
repe=0
for i in range(0,23):
listanum.append(random.randrange(0,100))for i in range(0, len(listanum)):
for x in range(0, len(listanum)):
if listanum[i]==listanum[x]:
repe+=1repe=(repe-len(listanum))/2
print(listanum)
print(repe)compruebarepes()
-
Hola amigos. Mi solución para el 2
frequency_of_GPU = int(input())
a=0
freq=int(input("La freq del joc"))
while (freq)
mf1=int(input("mf1")),
mf2=int(input("mf2")),
mf3=int(input("mf3")),
mf4=int(input("mf4")),game1_GPU=int(1 or 0)
game2_GPU=int(1 or 0)
game3_GPU=int(1 or 0)
game4_GPU=int(1 or 0)if (mf1 - frequency_of_GPU) >= 0:
game1_GPU=1
if (mf2 - frequency_of_GPU) >= 0:
game2_GPU=1
if (mf3 - frequency_of_GPU) >= 0:
game3_GPU=1
if (mf3 - frequency_of_GPU) >= 0:
game4_GPU=1print (a))
-
Amigos aqui teneis mi solucion para el 7,8
Printf(lefa) -
def max_de_tres (n1, n2, n3):
if n1 > n2 and n1 > n3:
print n1
elif n2 > n1 and n2 > n3:
print n2
elif n3 > n1 and n3 > n2:
print n3
else:
print "Son iguales -
ejercio 2 resuelto
def max_de_tres (n1, n2, n3):
if n1 > n2 and n1 > n3:
print n1
elif n2 > n1 and n2 > n3:
print n2
elif n3 > n1 and n3 > n2:
print n3
else:
print "Son igualesdef max_de_tres (n1, n2, n3):
if n1 > n2 and n1 > n3:
print n1
elif n2 > n1 and n2 > n3:
print n2
elif n3 > n1 and n3 > n2:
print n3
else:
print "Son igualesdef max_de_tres (n1, n2, n3):
if n1 > n2 and n1 > n3:
print n1
elif n2 > n1 and n2 > n3:
print n2
elif n3 > n1 and n3 > n2:
print n3
else:
print "Son iguales
def max_de_tres (n1, n2, n3):
if n1 > n2 and n1 > n3:
print n1
elif n2 > n1 and n2 > n3:
print n2
elif n3 > n1 and n3 > n2:
print n3
else:
print "Son iguales -
Haver chicos aqui tenes mi solucion para el 5
frequency_of_GPU = int(input())
a=0
freq=int(input("La freq del joc"))
while (freq)
mf1=int(input("mf1")),
mf2=int(input("mf2")),
mf3=int(input("mf3")),
mf4=int(input("mf4")),game1_GPU=int(1 or 0)
game2_GPU=int(1 or 0)
game3_GPU=int(1 or 0)
game4_GPU=int(1 or 0)if (mf1 - frequency_of_GPU) >= 0:
game1_GPU=1
if (mf2 - frequency_of_GPU) >= 0:
game2_GPU=1
if (mf3 - frequency_of_GPU) >= 0:
game3_GPU=1
if (mf3 - frequency_of_GPU) >= 0:
game4_GPU=1print (a))
-
Chicos en el foro el hacker esta toda la informacion
-
y
-
No me funciona el codigo del ejercicio 1, me dice que lista.append no esta definido
-
def suma_acumulada(list):
suma_acumulada = []
for i in range(len(list)):
if i == 0:
suma_acumulada.append(list[i])
else:
suma_acumulada.append(suma_acumulada[i-1] + list[i])
return suma_acumulada -
pasen los ejercicios del 1 al 3 Porfa es pa una tarea
Deja una respuesta
Wow me encanta por fin puedo entrar sin tener que usar una versión cacheada! 🙂