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
[[]]