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