Hay una forma cómoda de extraer elementos de una lista, se trata de las extended slices, similares las operaciones para acceder a los elementos de una matriz en Matlab o en numpy. La notación es como sigue, siendo "a" una lista, una tupla o un string:
- a[start:end] -> Lista los elementos a partir de la posición start, sin incluir, hasta end, es decir, matemáticamente (start,end].
- a[start:] -> A partir de start, sin incluir, hasta el final de la lista, es decir (start, final_lista] en matemáticas.
- a[:end] -> Desde el comienzo de la lista hasta el final.
- a[:] -> Todo el array.
>>> a = [1,2,3,4,5] >>> a[-1] 5 >>> a[-2] 4
Los resultados explican su comportamiento, que resulta muy intuitivo.
>>> a[-2:] [4, 5] >>> a[-3:] [3, 4, 5]Si se quieren sacar todos los valores menos los n últimos, se emplea a[:-n], es decir:
>>> a[:-1] [1, 2, 3, 4] >>> a[:-4] [1]
Desde la versión 1.4 de Python se puede añadir un tercer termino, el paso o step. Con esta nomenclatura tenemos a[start: end: step]. Algunos ejemplos:
>>> b = range(1,10) >>> b [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> b[0:9:2] [1, 3, 5, 7, 9] >>> b[::2] [1, 3, 5, 7, 9]Obsérvese la equivalencia de las dos últimas expresiones. También se pueden usar expresiones negativas en el step, en ese caso el proceso se realiza desde el fina hasta el principio:
>>> b[::-1] [9, 8, 7, 6, 5, 4, 3, 2, 1] >>> b[::-2] [9, 7, 5, 3, 1]
También podemos hacer asignación.
>>> c = [1,2] >>> c[1:3] = [-1,-2,-3] >>> c [1, -1, -2, -3]
Las posibilidades son numerosas y muy flexibles:
>>> d = range(0,5) >>> d [0, 1, 2, 3, 4] >>> d[2::2] [2, 4] >>> d[2::2] = [0,0] >>> d [0, 1, 0, 3, 0]
También permite eliminar elementos de forma selectiva:
>>> z = range(1,10) >>> z [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> del z[::2] >>> z [2, 4, 6, 8] >>>
En la siguiente entrada de Python básico continuo con el tema de las funciones anónimas.
No hay comentarios:
Publicar un comentario