Ejercicios de listas en python

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

  1. Unknown dice:

    Wow me encanta por fin puedo entrar sin tener que usar una versión cacheada! 🙂

    1. PythonDiario dice:

      Me alegro Ismael, tu fuiste unos de los primeros en conocer el blog y nunca podias verlo bine jaja. Saludos

    2. El salvador dice:

      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

  2. Unknown dice:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    def suma_acumulada():
    lista = []
    lista_nueva = []
    suma = 0

    for 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()

  3. Unknown dice:

    #!/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)

  4. Unknown dice:

    #!/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)

    1. Anónimo dice:

      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 lista

      r = randomize()
      print(r)
      print(elimina_duplicados(r))

  5. Unknown dice:

    #!/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()

  6. Unknown dice:

    #!/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 -= 1

    if nombre == inversa:
    print(nombre)

    leer_archivo_txt()

  7. Unknown dice:

    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 False

    print Duplicados(l)

  8. Unknown dice:

    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')

    1. Unknown dice:

      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 = lista

      while 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")

  9. Anónimo dice:

    #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])

  10. Anónimo dice:

    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_regresada

    print listar_palabras("text.txt")

    1. Anónimo dice:

      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: >>>...>...>...>

    2. PythonDiario dice:

      Muy bueno. Saludos 😉

  11. Anónimo dice:

    # 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 Nlista

    tabla = []
    for i in range(5):
    num = input("dame numero: ")
    tabla.append(num)

    print sumaAcumulada(tabla)

  12. Anónimo dice:

    # ejercicio 3
    def menorAmayor(lista):
    for i in range(len(lista)-1):
    if lista[i]>lista[i+1] :
    return False
    return True

    def mayorAmenor(lista):
    for i in range(len(lista)-1):
    if lista[i]<lista[i+1] :
    return False
    return True

    def 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])

  13. Anónimo dice:

    Algún consejo para comprender más el uso del software?

    1. Unknown dice:

      si en clickedu estan la soluciones

  14. SilenceDweller dice:

    Este comentario ha sido eliminado por el autor.

  15. Unknown dice:

    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 lista

    print leer("prueba.txt")

  16. Arguez dice:

    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()

  17. Arguez dice:

    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 lista

    def media(lista2):
    medialista=[]
    for i in range(1,len(lista2)-1):
    medialista.append(lista2[i])

    return medialista

    nuevalista=elimina(lista)

  18. Arguez dice:

    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+=1

    repe=(repe-len(listanum))/2
    print(listanum)
    print(repe)

    compruebarepes()

  19. Unknown dice:

    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=1

    print (a))

  20. Unknown dice:

    Amigos aqui teneis mi solucion para el 7,8
    Printf(lefa)

  21. Anónimo dice:

    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

  22. Er Bryan dice:

    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

  23. Unknown dice:

    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=1

    print (a))

  24. Unknown dice:

    Chicos en el foro el hacker esta toda la informacion

  25. Anónimo dice:

    No me funciona el codigo del ejercicio 1, me dice que lista.append no esta definido

  26. Andrés Sapatanga dice:

    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

    1. dcaraballo dice:

      Gracias por compartir tus solución

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.