Listas y Diccionarios

Escrito el Lunes 22 de Junio del 2009 por Ealdor

[A] Listas

Las listas en Python es la coleccion de tipos de objetos ordenada más flexible. A diferencia de las cadenas, las listas pueden contener cualquier tipo de objeto: números, cadenas, e incluso otras listas. Sus propiedas son:

1. Colecciones ordenadas de objetos arbitrarios.
2. Acceso por offset.
3. Heterogeneas, tamaño-variable, y anidamiento arbitario.
4. Secuencias mutables.

Tabla que listas los literales y operaciones comunes de las listas:

Operación Interpretación
L1 = [] Lista vacía
L2 = [0, 1, 2, 3] Cuatro elementos: indexado 0...3
L3 = ['abc', ['def', 'ghi']] Sublistas anidadas
L2[i]
L3[i][j]
L2[i:j]
len(L2)
Indice, índice de índice, slice, longitud
L1 + L2
L2 * 3
Concatenar, repetir
for x in L2
3 in L2
Iteración, miembro
L2.append(4)
L2.extends([5,6,7])
L2.sort()
L2.index(1)
L2.insert(I, X)
L2.reverse()
Métodos: crecer, ordenar, buscar, insertar, invertir, etc.
del L2[k]
del L2[i:j]
L2.pop()
L2.remove(2)
L2[i:j] = []
Disminución
L2[i]
L2[i:j] = [4,5,6]
Asignación de índice, asignación de slice
range(4)
xrange(0, 4)
Crear listas/tuplas de enteros
L4 = [x**2 for x in range(5)] Comprensión de listas

(1) Operaciones básicas:

Las listas responden a los operadores '+' y '*' del mismo modo que las cadenas; aquí tambien significan concatenación y repetición, excepto que el resultado es una nueva lista, no una cadena:

% python
>>> len([1, 2, 3])
3
>>> [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>> ['Ni!'] * 4
['Ni!', 'Ni!', 'Ni!', 'Ni!']
>>> 3 in [1, 2, 3]
True
>>> for x in [1, 2, 3]: print x,
...
1 2 3

(2) Indexación, Slicing, y Matrices

Debido a que las listas son secuencias, indexación y slicing funcionan de la misma que para las cadenas:

>>> L = ['spam', 'Spam', 'SPAM!']
>>> L[2]
'SPAM!'
>>> L[-2]
'Spam'
>>> L[1:]
['Spam', 'SPAM!']

Una de las maneras más simples de representar matrices (arrays multidimensionales) en Python es una lista con sublistas anidadas:

>>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> matrix[1]
[4, 5, 6]
>>> matrix[1][1]
5
>>> matrix[2][0]
7
>>> matrix = [[1, 2, 3],
...           [4, 5, 6],
...           [7, 8, 9]]
>>> matrix[1][1]
5

(3) Cambiando las listas en el lugar

Debido a que las listas son mutables, soportan operaciones que cambian una objeto de una lista en el lugar.

Puedes cambiar el contenido de las listas asignandolo a un elemento particular (offset), o una sección entera (slice):

>>> L = ['spam', 'Spam', 'SPAM!']
>>> L[1] = 'eggs'
>>> L
['spam', 'eggs', 'SPAM!']
>>> L[0:2] = ['eat', 'more']
>>> L
['eat', 'more', 'SPAM!']

Como las cadenas, los objetos de las listas en Python tambien soportan llamadas a métodos de tipo-específico:

>>> L.append('please')
>>> L
['eat', 'more', 'SPAM!', 'please']
>>> L.sort()
>>> L
['SPAM!', 'eat', 'more', 'please']

>>> L = [1, 2]
>>> L.extend([3,4,5])
>>> L
[1, 2, 3, 4, 5]
>>> L.pop()
5
>>> L
[1, 2, 3, 4]
>>> L.reverse()
>>> L
[4, 3, 2, 1]

Debido a que las listas son mutables, puedes usar la sentencia 'del' para eliminar un elemento o sección en el lugar:

>>> L
['SPAM!', 'eat', 'more', 'please']
>>> del L[0]
>>> L
['eat', 'more', 'please']
>>> del L[1:]
['eat']

>>> L = ['Already', 'got', 'one']
>>> L [1:] = []
>>> L
['Already']
>>> L[0] = []
>>> L
[[]]