Las secuencias son un tipo de datos cuyos elementos están ordenados y pueden ser accedidos vía un índice.
Todos los tipos de secuencias comparten el mismo modelo de acceso a sus elementos. Para acceder a un elemento en concreto se utiliza la siguiente nomenclatura seq[i]. Dada una variable de tipo secuencia denominada seq, accedemos al elemento que ocupa la posicion i. El esquema de numeración utilizado empieza en el 0 y finaliza en el valor que defina la longitud de la secuencia menos 1.
Varios elementos (substrings) pueden ser obtenidos a la vez utilizando el operador slice (trozo). La sintaxis para obtener un grupo de elementos es la siguiente:
secuencia[indice_inicial : indice_final]
Con esta sintaxis podemos obtener un trozo (slice) empezando en el elemento definido por el indice_inicial y terminando en el elemento anterior al definido por el indice_final.
>>> cadena='Hola Mundo!' >>> print cadena[0:4] Hola
Parece algo confuso pero la mejor forma de recordar como funciona el operador slice es pensar que los indices apuntan realmente entre los caracteres.
+---+---+---+---+---+ | H | e | l | p | A | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1
En la siguiente tabla se muestra una lista de operadores que se pueden utilizar con todos los tipos de secuencias:
Tabla 10.1. Operadores de secuencias
secuencia[index] | elemento situado en el índice index de la secuencia |
secuencia[ind1:ind2] | elementos desde el índice ind1 hasta el índice ind2 |
secuencia * n | la secuencia se repite n veces |
secuencia1 + secuencia2 | concatena las secuencias secuencia1 y secuencia2 |
objeto in secuencia | comprueba si objeto es un miembro de secuencia |
objeto not in secuencia | comprueba si objeto no es un miembro de secuencia |
La siguiente tabla muestra algunas de las funciones predefinidas que se pueden aplicar a las secuencias.
Tabla 10.2. Funciones Pre-Definidas
list (secuencia) | convierte la secuencia a un tipo lista |
str (objeto) | convierte el objeto a un tipo string |
tuple (secuencia) | convierte la secuencia a un tipo tupla |
len (secuencia) | devuelve la longitud (numero de elementos) de la secuencia |
max (secuencia) | devuelve el elemento mas grande de la secuencia |
min (secuencia) | devuelve el elemento menor de la secuencia |
Los diferentes tipos de secuencias se exponen a continuación.
Para Python, las cadenas (strings) son un conjunto contiguo de caracteres encerrados entre simples o dobles comillas.
>>> cadena='Hola Mundo!' >>> print cadena Hola Mundo!
Los strings son inmutables, no se puede alterar su valor a no ser que sean copiados a otro objeto string.
Los métodos y funciones aplicables al tipo de objeto string se encuentran definidos en el módulo string
>>> import string >>> cadena.upper() 'HOLA MUNDO!'
La línea import string permite acceder a todos los métodos y atributos disponibles para un tipo de dato string, siendo la línea cadena.upper() la forma de invocar al método upper sobre el objeto string denominado cadena. Como resultado obtenemos el string en mayúsculas.
La siguiente tabla muestra algunos de los métodos disponibles en el módulo string:
Tabla 10.3. Métodos del módulo string
find( sub[, start[, end]]) | devuelve el índice menor donde se encuentra el substring sub dentro del string |
isalnum() | devuelve verdadero si todos los caracteres en el string son alfanuméricos y existe al menos uno. |
isdigit() | devuelve verdadero si todos los caracteres en el string son dígitos y existe al menos uno. |
lower() | devuelve una copia del string convertido a minúsculas. |
split([sep [,maxsplit]]) | devuelve una lista de elementos del string utilizando como separador sep. |
Python posee varios tipos de datos para agrupar de una forma fácil diferentes valores. El tipo de dato más versátil es la lista. Una lista es una colección de elementos separados por comas y encerrados entre paréntesis. Los elementos de una lista no tienen porque ser del mismo tipo.
>>> lista = [ 1,'dos',3,'cuatro'] >>> print lista [1, 'dos', 3, 'cuatro']
Como ocurría con el tipo de datos string, los índices de una lista empiezan en el 0, y pueden ser troceadas (sliced), concatenadas ...
>>> lista [0] 1 >>> lista [3] 'cuatro' >>> lista [1:-1] ['dos', 3] >>> lista + [5,'seis'] [1, 'dos', 3, 'cuatro', 5, 'seis']
A diferencia de los strings, que por definición eran inmutables, en una lista podemos cambiar el valor de un elemento individual.
>>> lista [1, 'dos', 3, 'cuatro'] >>> lista [2] = 'tres' >>> lista [1, 'dos', 'tres', 'cuatro']
Es posible también crear listas anidadas (listas cuyos elementos pueden ser otras listas)
>>> lista1 = [2, 3] >>> lista2 = [1, lista1, 4] >>> len(lista2) 3 >>> lista2 [1, [2, 3], 4]