Secuencias (strings, listas y tuplas)

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 * nla secuencia se repite n veces
secuencia1 + secuencia2concatena las secuencias secuencia1 y secuencia2
objeto in secuenciacomprueba si objeto es un miembro de secuencia
objeto not in secuenciacomprueba 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.

Strings

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.

Listas y Tuplas

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]