Introducción
Esta sección introduce las listas, el tipo principal de Python para almacenar una colección ordenada de valores.
This tutorial is from open-source community. Access the source code
💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí
Esta sección introduce las listas, el tipo principal de Python para almacenar una colección ordenada de valores.
Utiliza corchetes cuadrados para definir un literal de lista:
names = [ 'Elwood', 'Jake', 'Curtis' ]
nums = [ 39, 38, 42, 65, 111]
A veces, las listas se crean mediante otros métodos. Por ejemplo, una cadena de texto se puede dividir en una lista utilizando el método split()
:
>>> line = 'GOOG,100,490.10'
>>> row = line.split(',')
>>> row
['GOOG', '100', '490.10']
>>>
Las listas pueden contener elementos de cualquier tipo. Agrega un nuevo elemento usando append()
:
names.append('Murphy') ## Agrega al final
names.insert(2, 'Aretha') ## Inserta en el medio
Utiliza +
para concatenar listas:
s = [1, 2, 3]
t = ['a', 'b']
s + t ## [1, 2, 3, 'a', 'b']
Las listas se indexan con enteros. Comienza en 0.
names = [ 'Elwood', 'Jake', 'Curtis' ]
names[0] ## 'Elwood'
names[1] ## 'Jake'
names[2] ## 'Curtis'
Los índices negativos se cuentan desde el final.
names[-1] ## 'Curtis'
Puedes cambiar cualquier elemento de una lista.
names[1] = 'Joliet Jake'
names ## [ 'Elwood', 'Joliet Jake', 'Curtis' ]
Longitud de la lista.
names = ['Elwood','Jake','Curtis']
len(names) ## 3
Prueba de pertenencia (in
, not in
).
'Elwood' in names ## True
'Britney' not in names ## True
Replicación (s * n
).
s = [1, 2, 3]
s * 3 ## [1, 2, 3, 1, 2, 3, 1, 2, 3]
Utiliza for
para iterar sobre los contenidos de la lista.
for name in names:
## utiliza name
## por ejemplo, print(name)
...
Esto es similar a una declaración foreach
de otros lenguajes de programación.
Para encontrar rápidamente la posición de algo, utiliza index()
.
names = ['Elwood','Jake','Curtis']
names.index('Curtis') ## 2
Si el elemento está presente más de una vez, index()
devolverá el índice de la primera aparición.
Si el elemento no se encuentra, se generará una excepción ValueError
.
Puedes eliminar elementos ya sea por valor del elemento o por índice:
## Usando el valor
names.remove('Curtis')
## Usando el índice
del names[1]
La eliminación de un elemento no crea un hueco. Otros elementos se desplazarán hacia abajo para llenar el espacio vacado. Si hay más de una aparición del elemento, remove()
eliminará solo la primera aparición.
Las listas se pueden ordenar "in-place".
s = [10, 1, 7, 3]
s.sort() ## [1, 3, 7, 10]
## Orden inverso
s = [10, 1, 7, 3]
s.sort(reverse=True) ## [10, 7, 3, 1]
## Funciona con cualquier dato ordenado
s = ['foo', 'bar','spam']
s.sort() ## ['bar', 'foo','spam']
Utiliza sorted()
si prefieres crear una nueva lista en lugar de modificar la original:
t = sorted(s) ## s permanece inalterada, t contiene los valores ordenados
Advertencia: Las listas no fueron diseñadas para operaciones matemáticas.
>>> nums = [1, 2, 3, 4, 5]
>>> nums * 2
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
>>> nums + [10, 11, 12, 13, 14]
[1, 2, 3, 4, 5, 10, 11, 12, 13, 14]
Especificamente, las listas no representan vectores/matrices como en MATLAB, Octave, R, etc. Sin embargo, hay algunos paquetes que pueden ayudarte en eso (por ejemplo, numpy).
En este ejercicio, experimentamos con el tipo de datos de lista de Python. En la última sección, trabajaste con cadenas que contenían símbolos de acciones.
>>> symbols = 'HPQ,AAPL,IBM,MSFT,YHOO,DOA,GOOG'
Divídelo en una lista de nombres utilizando la operación split()
de cadenas:
>>> symlist = symbols.split(',')
Intenta algunas búsquedas:
>>> symlist[0]
'HPQ'
>>> symlist[1]
'AAPL'
>>> symlist[-1]
'GOOG'
>>> symlist[-2]
'DOA'
>>>
Intenta reasignar un valor:
>>> symlist[2] = 'AIG'
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'DOA', 'GOOG']
>>>
Toma algunos segmentos:
>>> symlist[0:3]
['HPQ', 'AAPL', 'AIG']
>>> symlist[-2:]
['DOA', 'GOOG']
>>>
Crea una lista vacía y agrega un elemento a ella.
>>> mysyms = []
>>> mysyms.append('GOOG')
>>> mysyms
['GOOG']
Puedes reasignar una parte de una lista a otra lista. Por ejemplo:
>>> symlist[-2:] = mysyms
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG']
>>>
Cuando haces esto, la lista del lado izquierdo (symlist
) se redimensionará adecuadamente para que quepa el lado derecho (mysyms
). Por ejemplo, en el ejemplo anterior, los últimos dos elementos de symlist
se reemplazaron por el único elemento de la lista mysyms
.
El bucle for
funciona recorriendo datos en una secuencia como una lista. Prueba esto escribiendo el siguiente bucle y observando lo que sucede:
>>> for s in symlist:
print('s =', s)
## Mira la salida
Utiliza el operador in
o not in
para comprobar si 'AIG'
, 'AA'
y 'CAT'
están en la lista de símbolos.
>>> ## ¿Está 'AIG' EN la `symlist`?
True
>>> ## ¿Está 'AA' EN la `symlist`?
False
>>> ## ¿No está 'CAT' EN la `symlist`?
True
>>>
Utiliza el método append()
para agregar el símbolo 'RHT'
al final de symlist
.
>>> symlist.append('RHT') ## agrega 'RHT'
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>>
Utiliza el método insert()
para insertar el símbolo 'AA'
como el segundo elemento de la lista.
>>> symlist.insert(1, 'AA') ## Inserta 'AA' como el segundo elemento de la lista
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>>
Utiliza el método remove()
para eliminar 'MSFT'
de la lista.
>>> symlist.remove('MSFT') ## Elimina 'MSFT'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT']
>>>
Agrega una entrada duplicada de 'YHOO'
al final de la lista.
Nota: está perfectamente bien que una lista tenga valores duplicados.
>>> symlist.append('YHOO') ## Agrega 'YHOO'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT', 'YHOO']
>>>
Utiliza el método index()
para encontrar la primera posición de 'YHOO'
en la lista.
>>> symlist.index('YHOO') ## Encuentra el primer índice de 'YHOO'
4
>>> symlist[4]
'YHOO'
>>>
Cuenta cuántas veces aparece 'YHOO'
en la lista:
>>> symlist.count('YHOO')
2
>>>
Elimina la primera aparición de 'YHOO'
.
>>> symlist.remove('YHOO') ## Elimina la primera aparición de 'YHOO'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'GOOG', 'RHT', 'YHOO']
>>>
Para que lo sepas, no hay ningún método para encontrar o eliminar todas las apariciones de un elemento. Sin embargo, veremos una forma elegante de hacer esto en la sección 2.
¿Quieres ordenar una lista? Utiliza el método sort()
. Prueba:
>>> symlist.sort()
>>> symlist
['AA', 'AAPL', 'AIG', 'GOOG', 'HPQ', 'RHT', 'YHOO']
>>>
¿Quieres ordenar en orden inverso? Prueba esto:
>>> symlist.sort(reverse=True)
>>> symlist
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>>
Nota: Ordenar una lista modifica su contenido "in-place". Es decir, los elementos de la lista se reorganizan, pero no se crea una nueva lista como resultado.
¿Quieres tomar una lista de cadenas y unirlas en una sola cadena? Utiliza el método join()
de las cadenas de la siguiente manera (ten en cuenta: esto puede parecer extraño al principio).
>>> a = ','.join(symlist)
>>> a
'YHOO,RHT,HPQ,GOOG,AIG,AAPL,AA'
>>> b = ':'.join(symlist)
>>> b
'YHOO:RHT:HPQ:GOOG:AIG:AAPL:AA'
>>> c = ''.join(symlist)
>>> c
'YHOORHTHPQGOOGAIGAAPLAA'
>>>
Las listas pueden contener cualquier tipo de objeto, incluyendo otras listas (por ejemplo, listas anidadas). Prueba esto:
>>> nums = [101, 102, 103]
>>> items = ['spam', symlist, nums]
>>> items
['spam', ['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA'], [101, 102, 103]]
Presta atención detenidamente a la salida anterior. items
es una lista con tres elementos. El primer elemento es una cadena de texto, pero los otros dos elementos son listas.
Puedes acceder a los elementos de las listas anidadas mediante múltiples operaciones de indexación.
>>> items[0]
'spam'
>>> items[0][0]
's'
>>> items[1]
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>> items[1][1]
'RHT'
>>> items[1][1][2]
'T'
>>> items[2]
[101, 102, 103]
>>> items[2][1]
102
>>>
Aunque técnicamente es posible crear estructuras de lista muy complicadas, como regla general, quieres mantener las cosas simples. Por lo general, las listas contienen elementos que son todos del mismo tipo de valor. Por ejemplo, una lista que consta enteramente de números o una lista de cadenas de texto. Mezclar diferentes tipos de datos en la misma lista a menudo es una buena manera de hacer que te desborden los sesos, por lo que es mejor evitarlo.
¡Felicidades! Has completado el laboratorio de Listas. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.