Google+ Seguidores

miércoles, 24 de septiembre de 2014

Ejercicios de listas en python

    16

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


16 comentarios:
Write comentarios
  1. Wow me encanta por fin puedo entrar sin tener que usar una versión cacheada! :)

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

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

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

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

    ResponderEliminar
    Respuestas
    1. 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))

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

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

    ResponderEliminar
  7. 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)

    ResponderEliminar
  8. 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')

    ResponderEliminar
  9. #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])

    ResponderEliminar
  10. 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")

    ResponderEliminar
    Respuestas
    1. 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: >>>...>...>...>

      Eliminar
  11. # 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)

    ResponderEliminar
  12. # 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])

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.