Listas: más sobre ellas. Notación de rangos y métodos interesantes.
Observa este programa.
# *-* coding:utf-8 *-* xs = [2003, 6789, 5488, 3245] print xs print ("Longitud de la lista: %d") % (len(xs)) print ("Primer elemento %d") % (xs[0]) print ("Último elemento %d") % (xs[3]) print ("Sublista, del principio hasta el elemento 1 %s") % (xs[:1]) print ("Del elemento 0 al elemento 1-1, o sea, el 0") print ("Recuerda, el orden de una lista empieza en el índice 0\n") print ("Sublista [1:1] %s") % (xs[1:1]) print ("Recuerda, del elemento 1 al elemento 1-1=0... Inexistente\n") print ("Sublista [1:2] %s") % (xs[1:2]) print ("Del elemento 1 al elemento 2-1, o sea, el 1. \n") print ("Sublista [1:4] %s") % (xs[1:4]) print ("Del elemento 1 al elemento 4-1, o sea, el 3. \n") print ("Sublista,. Menos el último [:-1] %s") % (xs[:-1]) print ("Sublista, Menos los dos últimos [:-2] %s") % (xs[:-2]) print ("Sublista, el último [-1:] %s") % (xs[-1:]) print ("Sublista, los dos últimos [-2:] %s") % (xs[-2:])
===
Otras operaciones de lista
# *-* coding:utf-8 *-* xs = [2003, 6789, 5488, 3245] print xs xs[1] = 10325 print ("Cambio un elemento de la lista - índice 1: %s") % (xs) xs.append(9999) print ("Añado un elemento al final: %s") % (xs) xs.insert(2, 2332) print ("Inserto un elemento con índice 2: %s") % (xs) xs.insert(2, 9999) print ("Inserto un elemento con índice 2, de nuevo, el anterior pasa al 3: %s") % (xs) xs.remove(2332) print ("Quitar un elemento de la lista, el 2332: %s") % (xs) xs.remove(9999) print ("Quitar un elemento de la lista, el 9999: %s") % (xs) print ("Si el elemento está repetido, se quita el primero de la lista ") print ("Si intento quitar uno que no exista, da un error") estaONo = 5488 in xs print ("Comprobar si está o no en la lista %s") % (estaONo) indice = xs.index(5488) print ("Devueleve el índice o posición de un elemento, 5488: %d") % (indice) print ("%s") % (xs)
===
Tuplas. Elementos inmutables.
A diferencia de las listas, cuyos elementos pueden cambiar, vamos ahora a estudiar las tuplas. Las tuplas, una vez definidas en el programa son inmutables, es decir , no se pueden cambiar. Pero se pueden construir de elementos de distinto tipo. Por ejemplo,# *-* coding:utf-8 *-* # TUPLAS fecha = (10,"Enero",2015) # Esto no se puede hacer: print ("La fecha es %s") % (fecha) print fecha print ("\nSe puede usar la notación por rangos, vista antes para las listas") print fecha[:2] # Esto no se puede hacer: fecha[2] = 2016, ya que son inmutables.Enero print ("\nSe puede calcular su longitud") print len(fecha) print ("\nSe pueden definir tuplas unitarias; no olvidar la COMA") unitaria = (1234, ) # Si se pone unitaria = (1234) NO FUNCIONA print len(unitaria) print unitaria
===
Las tuplas se pueden EMPAQUETAR, es decir, varias variables se pueden almacenar en una tupla. Y también DESEMPAQUETAR.
# *-* coding:utf-8 *-* # EMPAQUETAR TUPLAS dia = 10 mes = "Junio" anno = 2015 fecha = dia, mes, anno print fecha # DESEMPAQUETAR TUPLAS dia2, mes2, anno2 = fecha print dia2 print ("En el mes de %s") % (mes2) print ("dentro de dos años %d") % (anno2 + 2)
= = =
Las cadenas son listas y se pueden hacer muchas cosas con ellas
Las cadenas son listas, de caracteres, y como tal pueden ser tratadas.
Por ejemplo se les puede asignar la notación de rangos para obtener subcadenas o substrings.# *-* coding:utf-8 *-* miCadena = "Esta es una frase o conjunto de palabras con sentido" print miCadena print miCadena[3:] print miCadena[:-2] print miCadena[-2] print miCadena[4:24]
===
Pero las cadenas tienen métodos particulares. Por ejemplo:
- Separar la cadena por uno o varios conjuntos de caracteres. Función split. Esta función acepta como argumento el carácter por el cual se va a dividir.
- Unir con el método join una lista en una nueva cadena, usando otro separador.
# *-* coding:utf-8 *-* miCadena = "Esta es una frase o conjunto de palabras con sentido" print miCadena # Separando la cadena por el caracter espacio # no hace falta. En el caso del espacio es el caracter por defecto. Funcionaría # cs = miCadena.split() cs = miCadena.split(" ") print cs # Vuelvo a unirla, pero usando los caracteres --- miCadena2 = "---".join(cs) print miCadena2
===
Para más información, y para encontrar muchos más métodos referidos al objeto String, se puede ver esta web: http://librosweb.es/libro/python/capitulo_6.html
Ordenando listas
Los elementos de una lista pueden ordenarse de dos formas:
- La lista se puede convertir en una lista ordenada. Método sort o reverse
- La lista puede copiarse a otra lista ordenada: función sorted.
# *-* coding:utf-8 *-* miLista = [15, 10, 4, 7, 5, 3, 4] miListaOrdenada = sorted(miLista) print ("La lista desordenada es %s y la ordenada %s") % (miLista, miListaOrdenada) print("... pero puedo convertir la lista original en una que ya se queda ordenada") miLista.sort() print ("La lista ya ordenada %s") % (miLista) print("pero la puedo ordenar en orden inverso") miLista.reverse() print ("La lista en orden inverso %s") % (miLista)
===
¿Qué ocurre con cadenas de caracteres?
# *-* coding:utf-8 *-* miLista = ["cC","bB", "dD", "aA"] print sorted(miLista) # cuidado, y si las mayúsculas y las minúsculas están # alternadas como primera letra ¿¿?? miLista = ["Cc","bB", "Dd", "aA"] print sorted(miLista) # Ordena PRIMERO LAS MAYÚSCULAS y después las minúsculas. # A menos que use un criterio de ordenación print sorted(miLista, key=str.lower) # En este caso la ordena como si las mayúsculas las hubiera convertido a minúsculas. # O al revés... print sorted(miLista, key=str.upper) #¿Qué ordena antes, números o letras? miLista2 = [7, "cC", 2, 5, 1, "aA", 3, "fF", 0.1, 5.32] print sorted(miLista2) # o al revés aa = sorted(miLista2, reverse=True) print aa bb = aa + miLista2 print sorted(bb)
===
Y un poco más
# *-* coding:utf-8 *-* miCadena ="Frase rimbombante" miCadena2 = sorted(miCadena, key=str.lower) print miCadena2 print ("Número de caracteres: %d") % (len(miCadena2)) print ("Número de caracteres \"a\": %d") % (miCadena.count("a"))
No hay comentarios:
Publicar un comentario