Listas en python

Listas en python
Listas en python

Las listas son un tipo de colección ordenada y se asemejan
mucho o son el equivalente en otros lenguajes de programación a lo que se conoce como arreglos
o vectores.
Esta entrada la hago con el fin de ir completando mi tutorial python (lo aclaro porque en otras entradas ya he tocado el tema listas).
En python estas listas pueden contener enteros, booleanos, cadenas
de texto, flotantes o inclusive listas. Los elementos de una lista van
encerrados entre corchetes ([]) y separados por comas cada uno de ellos de la
siguiente forma:

Índice

Ejemplo de nuestra primera lista en python:

lista = [1, “dos”, False, [45, “cien”]]
Como podemos ver, nuestra lista tiene los siguientes
elementos: un entero (1), una cadena de texto (“dos”), un booleano (False) y
otra lista con dos elementos (un entero 45 y una cadena de texto “cien”).

Como acceder a los elementos de una lista

Cada elemento de una lista cuenta con un índice. Este índice
comienza con el numero 0 para el elemento numero 1. En nuestra lista (lista) el
índice 0 corresponde al elemento (1), la cadena de texto que contiene la
palabra “dos” seria el elemento número dos de la lista pero contiene el índice
1 y así sucesivamente con los demás elementos de la lista.

Ejemplo para acceder a un elemento de la lista

num = lista[1]
Lo que hicimos en el anterior ejemplo fue asignarle a la
variable num el elemento con índice uno de la lista (lista), en este caso
(“dos”), por lo tanto la variable num va a contener la cadena de texto “dos”.
Ahora, para que nos muestre el contenido de nuestra nueva variable, solo tendremos que pedirlo con un print:

print num

Acceder a un elemento de la lista en python
Acceder a un elemento de la lista en python

 Ahora, como hacemos para acceder a los elementos de una lista que están dentro de otra lista?

Ejemplo: quiero acceder al primer elemento de la lista que esta dentro de la lista (lista):

lista = [1, “dos”, False, [45, “cien”]]

El elemento 4 de la lista (lista) es otra lista. Como dije anteriormente, los indices se empiezan a contar desde el 0, por lo tanto el indice del elemento 4 es el 3. Y como el elemento 4 también es una lista voy a poder acceder a sus elementos por sus indices, en este caso al indice 0 porque queremos interactuar con el primer elemento.

num = lista[3][0] #Ahora num vale 45

Cambiar o modificar elementos de una lista:

Lo que haremos sera cambiar el elemento 1 de la lista (lista) original por otro cualquiera.
lista = [1, “dos”, False, [45, “cien”]] #Definimos la lista
lista[1] = 5 #Asociamos el numero 5 al elemento con indice 1 de la lista
num = lista[1] #Le asignamos a la variable num el elemento con indice uno de la lista
print num #Para ver el cambio del nuevo elemento
print lista #Para ver como quedaría la lista con el cambio

Particionar una lista

Python trae cosas muy interesantes en lo que tiene que ver con el manejo de listas.
Por ejemplo, si nosotros queremos ver solo una porción de la lista tendríamos que hacer lo siguiente:
[inicio:fin]

lista = [1, “dos”, False, [45, “cien”]]

#Por ejemplo, para ver los primeros tres elementos de la lista (lista)

ejemplo = lista[0:3]

print ejemplo

Aqui lo que hacemos es asignarle a ejemplo los primeros 3 elementos de la lista (lista), o sea, los elementos desde el indice 0 al 3, este ultimo no se incluye.

Si en lugar de ejemplo = lista[0:3] hacemos ejemplo = lista[0:]
Asigna desde el elemento 0 hasta el final de la lista porque no indicamos fin. Lo mismo seria si no indicamos un inicio: ejemplo = lista[:3], asignamos desde el comienzo.

Si nosotros queremos ver algunos elementos, ejemplo: uno si uno no hacemos lo siguiente:

[inicio:fin:salto]

lista = [1, “dos”, False, [45, “cien”]]

ejemplo = lista[0:3:2] #Con el 2 saltea de uno en uno

print ejemplo

Jugando con los elementos de una lista en python
Jugando con los elementos de una lista en python

También podemos modificar una fracción de una lista de la siguiente manera:

lista = [1, “dos”, False, [45, “cien”]]

lista[0:2] = [5, "mil"]

Si imprimimos la lista nos queda de la siguiente manera:

5, "mil", False, [45, "cien"]

Como los dos primeros elementos de la lista (lista) son 1 y "dos", se van a modificar por los elementos que hemos indicado nosotros: 5 y "mil".

Mencionar también que podemos trabajar con indices negativos, muy útiles a la hora de saber nuestro ultimo elemento de la lista, recorrer una lista de atrás hacia adelante, etc. Vamos a ver un ejemplo:

nombres = ["Diego", "Carlos", "Martin", "Lorena", "Natalia"]

print nombres[-1] #Nos devuelve el ultimo elemento de nuestra lista

Funciones y métodos para trabajar con listas

 

La función len() cuenta los elementos de una lista, ejemplo:

>>>estudiantes = ["Jose", "Raul", "Marcelo"]
>>>len(estudiantes)
3

Añadir elementos a una lista con el método insert(indice, objeto)

El método insert espera un indice y el valor a agregar, ejemplo:

>>>estudiantes = ["Jose", "Raul", "Marcelo"]
>>>estudiantes.insert(0, "Maria")
>>>print estudiantes
["Maria", "Jose", Raul", "Marcelo"]

Añadir elementos a una lista con el método append(objeto)

>>>estudiantes = ["Jose", "Raul", "Marcelo"]
>>>estudiantes.append("Mariela")
>>>print estudiantes
["Jose", "Raul", "Marcelo", "Mariela"]

Añadir varios elementos a una lista con el método extend(segmento)

>>>estudiantes = ["Jose", "Raul", "Marcelo"]
>>>estudiantes.extend(["Dario", "Natalia"])
>>>print estudiantes
["Jose", "Raul", "Marcelo", "Dario", "Natalia"]

Buscar elementos de una lista con el método index(objeto)

>>>estudiantes = ["Jose", "Raul", "Marcelo"]
>>>estudiantes.index("Raul")
1 #Retorna el índice del elemento "Raul"

Eliminar un elemento de la lista con el método remove(objeto)

>>>estudiantes = ["Jose", "Raul", "Marcelo"]
>>>estudiantes.remove("Raul")
>>>print estudiantes
["Jose", "Marcelo"]

Convertir cadenas en una lista con el método split()

Con el método split() podemos convertir una cadena de caracteres en una lista delimitada por los índices que indiquemos. Si no se indica nada se utilizan los espacios:

>>>"Hola mi nombre es Diego".split()
["Hola","mi","nombre","es","Diego"]

>>>"1-2-3-4-5-6".split("-")
["1","2","3","4","5","6"]

Buscar y saber si hay elemento duplicados con el método set()

>>>estudiantes = ["Martin", "Jose", "Raul", "Jose"]
>>>estudiantes_unicos = list(set(estudiantes))
>>>print estudiantes_unicos
["Raul", "Jose", "Martin"]

Veamos un ejemplo con una función:

def duplicado(lista):
    new_list = list(set(lista))

    if len(new_list) != len(lista):
        return True #Retorna True si hay duplicados
    else:
        return False
#Retorna False si no hay duplicados

Con el método pop(), podremos eliminar y mostrar el ultimo elemento de la lista, ejemplo:

>>>estudiantes = ["Jose", "Raul", "Marcelo"]
>>>estudiantes.pop()
"Marcelo"
>>>estudiantes
["Jose", "Raul"]

Saber cuantas veces se repite un elemento de una lista con el método count(objeto)

>>>estudiantes = ["Jose", "Raul", "Marcelo", "Raul"]
>>>estudiantes.count("Raul")

2

Invertir una lista con el método reverse()

>>>estudiantes = ["Jose", "Raul", "Marcelo", "Raul"]
>>>estudiantes.reverse()
>>>print estudiantes
["Raul", "Marcelo", "Raul", "Jose"]

Bueno, espero tengan una buena base para empezar a meter mano con las listas en python

Como siempre, cualquier duda o sugerencia dejen sus comentarios al final de la entrada. Saludos
  1. Anónimo dice:

    hola, quiserea saber como solicitar al usuario ingresar datos ren una lista, osea "Cree un programa en Python 3.4 que le solicite al usuario ingresar una lista (mínimo con un elemento), una palabra y un número"

    1. PythonDiario dice:

      Hola, gracias por visitar el blog!!! Has pensado alguna solución? Porque no se resuelven ejercicios, tratamos de ayudar a pensar. Si tienes algo de código puedes publicarlo. Saludos!!!

  2. Unknown dice:

    Muchisimas gracias! muy bien explicado

  3. Unknown dice:

    Hola Diego estoy siguiendo tus Tutoriales pero me porque en al facultad tengo Fundamentos de la programación, pero los problemas que dan a veces me traen dolor de cabeza y no puedo sacarlo. Si me ayudarías aunque sea con una parte del código te agradecería.

    Escribir una función denominada “cuantos_días” que reciba el número de mes como parámetro y retorne la cantidad de días que posee. Ejemplo: cuantos_días(1), debería retornar 31

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

    def cuantos_dias(mes):
    mes=[["Enero",31],["Febrero",29],["Marzo",31],["Abril",30],["Mayo",31],["Junio",30],["Julio",30],["Agosto",31],["Octubre",31],["Noviembre",30],["Diciembre",31]]
    print mes[0][1]

    cuantos_días(1)

    1. PythonDiario dice:

      Hola Ramiro, gracias por visitar el blog. La idea es hacerlo si o si con listas? Saludos

    2. PythonDiario dice:

      def cuantos_dias(x): # x sera el numero que pase como parametro, ejemplo 12 (diciembre)
      ----mes=[["Enero",31],["Febrero",29],["Marzo",31],["Abril",30],["Mayo",31],["Junio",30],["Julio",30],["Agosto",31],["Setiembre", 30],["Octubre",31],["Noviembre",30],["Diciembre",31]]
      ----if (x <= 0) or (x >12): # si el numero es menor a cero o mayor a 12 no es un mes
      --------print "No es un mes valido"
      ----else:
      --------print mes[x - 1][1] #El primer [] resta el numero ingresado - 1 para obtener el indice de la lista, el segundo [] obtiene el segundo elemento de cada sublista

      # Espero se entienda, Saludos, Diego
      cuantos_dias(12)

      Los guiones (-) son para que respetes la sangria.

    3. Unknown dice:

      Gracias Diego sos un Genio. Voy a seguir tus tutoriales.

  4. Domingo V dice:

    Hola Diego
    Como puedo hacer para que la consola me entregue el valor que mas se repite dentro de una lista
    Por ejemplo tengo la lista [1,4,4,6,3,4,2] y quiero que me entregue como resultado 4

    1. PythonDiario dice:

      Hola Domingo, el método count cuenta cuantas veces se repite cierto elemento en una lista. En tu ejemplo: lista.count(4) daría como resultado 3. Se me ocurre que podrías hacer un for que recorra toda tu lista y vaya guardando en una variable el elemento que más se repite de la lista. Saludos 😉

  5. Gorkabeefie dice:

    Escriba un programa que permita crear una lista de palabras. Para ello, el programa tiene que pedir un número y luego solicitar ese número de palabras para crear la lista. Por último, el programa tiene que escribir la lista.
    como se hace?

    1. PythonDiario dice:

      Hola Gorkabeefie, gracias por visitar el blog!!!
      Has podido realizar algo del ejercicio? Puedes publicarlo como comentario para poder ayudarte!!!
      Saludos

  6. Unknown dice:

    hola diego tal vez me puedas ayuda, necesito que a un cantidad de numeros ingresados por el usuario el sistema imprima lista y luego el inverso
    a=[]
    tras=[]
    lista=[]
    matriz=[]
    elementos=int(input("Cuantos elementos tendra la lista:"))
    sub=int(input("Cuantos elementos tendran las listas internas:"))
    for k in range(elementos):
    lista.append([])
    for x in range(sub):
    valor=int(input("Ingrese valor:"))
    lista[k].append(valor)

    print(lista)

    saludos

  7. Anónimo dice:

    Hola Diego. Estoy comenzando el tutorial sin tener ni pizca idea de programación.

    Puse:
    ista=[1,“dos”,False,[45,“cien”]]

    num=lista[1]

    print num

    En el IDE cuando llego a la parte de "print num" me sale lo siguiente:

    File "prueba 4.py", line 1
    SyntaxError: Non-ASCII character 'xe2' in file prueba 4.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

    ------------------
    (program exited with code: 1)
    Press return to continue

    (He probado haciendo copia/pega directamente desde tu blog y poniendo todo sin espacios, pero pasa lo mismo)

    ¿Sabes cual podría ser el error?

    1. Anónimo dice:

      Ya lo he solucionado, al volver a escribirlo a mano todo, me ha salido tal cual.

    2. PythonDiario dice:

      Excelete, saludos y gracias por pasarte por el blog

  8. Anónimo dice:

    Muchas gracias Diego!

    Tu blog es oro

  9. Unknown dice:

    Hola Diego, te hago una consulta, para eliminar duplicados usaste el metodo set(), sin embargo antepusiste el metodo list().
    Que hace ese metodo? Hice la prueba de usar solo set() y me elimino los duplicados correctamente (sin hacer uso de list().
    desde ya muchas gracias

  10. Unknown dice:

    Hola amigo, gracias por los conocimientos que entregas, hice el ejercicio de copiar y pegar el script que reemplaza "dos" por 5, pero me lanzo unos errores y me di cuenta de q la sintaxis no estaba bien, lo correcto seria esto:
    lista = ['1', 'dos', 'False', [45, 'cien']] #Definimos la lista
    print lista
    lista[1] = 5 #Asociamos el numero 5 al elemento con indice 1 de la lista
    num = lista[1] #Le asignamos a la variable num el elemento con indice uno de la lista
    print num #Para ver el cambio del nuevo elemento

    print lista #Para ver como quedaría la lista con el cambio

    PD: Es efectivamente un error el como escribiste ese script?
    bueno muchas gracias, adios.

  11. Jefferson Parra dice:

    Hola Diego me gustaría saber que función se puede usar para el siguiente problema: Debo mirar si se repite algún dato y si se repite, tomar el primer dato ingestado y eliminar el resto.
    Muchas gracias, feliz tiempo.

  12. Unknown dice:

    como ordenar una lista bro"

  13. Unknown dice:

    Hola diego soy nuevo en esto de la programacion y pues me estanque en esta funcion: 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.
    busco bibliografia y no encuentra la funcion inversa

    1. PythonDiario dice:

      Hola, seguramente en esta sección que te dejo abajo ya haya algún ejercicio parecido. Gracias por escribir.
      https://www.pythondiario.com/p/ejercicios-de-programacion-python.html

  14. Unknown dice:

    Alguien me podría ayudar con este ejercicio (realice un programa que pida 10 números y los guarde en dos listas diferentes)

Deja una respuesta

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

Subir
White Monkey