Listas
Almacenan una lista de objetos (enteros, cadenas etc.). Se denotan con corchetes y comas. El índice
del primer objeto de la lista es 0
>>> palabras = ["primera","segunda","tercera"]
>>> print(palabras[0])
>>> print(palabras[1])
>>> print(palabras[2])
primera
segunda
tercera
>>> nums =[4,3,2]
>>> print(nums[2])
3
Para crear una lista vacía basta con no poner nada entre los corchetes
>>> lista_vacia=[]
Lo normal es que las listas contengan elementos de un solo tipo, pero Python admite listas con
elementos de distinto tipo y también listas anidadas (las permite, pero no las recomienda):
num=3
lista=["cosa", 0, [1,2,num], 5.47]
print(lista[1])
print(lista[2])
print(lista[2][2])
Daría por pantalla:
0
[1,2,3]
3
Con listas anidadas podríamos representar por ejemplo matrices:
>>> matriz = [[1,2,3],[4,5,6][7,8,9]]
La cadenas se pueden tratar como listas en cierto modo:
str="Hello world"
print(str[6])
Daría por pantalla
w
Operaciones con listas
Igual que cualquier otra variable, los objetos de una lista pueden cambiar de valor
nums=[7,7,7,7,7]
nums[2]=4
print(nums)
Daría:
[7,7,4,7,7]
Se les pueden añadir elementos:
Python 17
nums=[1,2,3]
print(nums+[4,5,6])
print(nums*3)
Daría:
[1,2,3,4,5,6]
[1,2,3,1,2,3,1,2,3]
Para comprobar si un elemento está en una lista se usa el operador in:
palabras=["a","b","c","d"]
print("a" in palabras)
print("g" in palabras)
True
False
Para comprobar si un elemento no esta en una lista se usa NOT combinado con IN: not in. Se puede
usar de varias formas:
nums=[1,2,3]
print(not 4 in nums)
print(4 not in nums)
print(not 3 in nums)
print(3 not in nums)
True
True
False
False
Funciones de lista
append agrega un elemento al final de una lista ya existente
nums=[1,2,3]
[Link](4)
print(nums)
Daría:
[1,2,3,4]
Para obtener el número de elementos de una lista se usa la función len. Append era un método, pero
len es una función por lo que su sintaxis es distinta:
nums=[1,3,4,2,3]
print(len(nums))
Daría: 5
insert es parecido a append, pero introduce el elemento en la posición que se le indica:
[Link] (posición, valor")
palabras["python", "divertido"]
[Link](1,"es")
print(palabras)
Daría: ["python", "es", "divertido"]
index encuentra la primera ocurrencia de un elemento en una lista y devuelve su índice. Si no esta
en la lista da ValueError
Python 18
letras=["a","b","c","d"]
print([Link]("b"))
print([Link]("k"))
Daría:
1
ValueError: 'k' is not in list
Otras funciones:
max(lista): devuelve el elemento de mayor valor de la lista
min(lista): devuelve el elemento de menor valor de la lista
[Link](objeto): devulve el número de veces que aparece el objeto en la lista
[Link](objeto): elimina un objeto de la lista
[Link](): invierte los elementos de una lista
La función range crea una lista secuencial de números:
numeros=list(range(10))
print(numeros)
Daría: [0,1,2,3,4,5,6,7,8,9]
Si tiene dos argumentos, crea la lista desde el primero hasta el último menos uno:
numbers=list(range(3,8))
print(numbers)
Daría [3,4,5,6,7]
Si range tiene un tercer argumento, este nos indica el incremento en la secuencia:
nums=list(range(5,20,2))
print(numbers)
Daría: [5,7,9,11,13,15,17,19]
Otras funciones de lista
Vamos a usar una lista con nombres masculinos y a añadir y quitar elementos. Usaremos algunas de
los funciones y métodos vistos antes así como otros nuevos:
nombres_masculinos = ["Alvaro", "Jacinto", "Miguel", "Edgardo", "David"]
nombres_masculinos.append("Jose") #añade nombre al final
print (nombres_masculinos)
['Alvaro', 'David', 'Edgardo', 'Jacinto', 'Jose', 'Ricky', 'Jose']
nombres_masculinos.extend(["Jose", "Gerardo"]) #añade varios nombre al final
print (nombres_masculinos)
['Alvaro', 'David', 'Edgardo', 'Jacinto', 'Jose', 'Ricky', 'Jose', 'Jose',
'Gerardo']
nombres_masculinos.insert(0, "Ricky") #añade nombre en una posición dada
print (nombres_masculinos)
['Ricky', 'Alvaro', 'David', 'Edgardo', 'Jacinto', 'Jose', 'Ricky', 'Jose',
'Jose', 'Gerardo']
nombres_masculinos.pop() #elimina el último elemento
'Gerardo'
print (nombres_masculinos)
['Ricky', 'Alvaro', 'David', 'Edgardo', 'Jacinto', 'Jose', 'Ricky', 'Jose',
'Jose']
nombres_masculinos.pop(3) #elimina un elemento por su índice
'Edgardo'
Python 19
print (nombres_masculinos)
['Ricky', 'Alvaro', 'David', 'Jacinto', 'Jose', 'Ricky', 'Jose', 'Jose']
nombres_masculinos.remove("Jose") #elimina un elemento por su valor
print (nombres_masculinos)
['Ricky', 'Alvaro', 'David', 'Jacinto', 'Ricky', 'Jose', 'Jose']
nombres_masculinos.reverse() #da la vuelta a la lista
print (nombres_masculinos)
['Jose', 'Jose', 'Ricky', 'Jacinto', 'David', 'Alvaro', 'Ricky']
nombres_masculinos.sort() #ordena de forma creciente
print (nombres_masculinos)
['Alvaro', 'David', 'Jacinto', 'Jose', 'Jose', 'Ricky', 'Ricky']
nombres_masculinos.sort(reverse=True) #ordena de forma decreciente
print (nombres_masculinos)
['Ricky', 'Ricky', 'Jose', 'Jose', 'Jacinto', 'David', 'Alvaro']
nombres_masculinos = ["Alvaro", "Miguel", "Edgardo", "David", "Miguel"]
nombres_masculinos.count("Miguel") #cuantas veces aparece un elemento
2
nombres_masculinos.index("Edgardo") #devuelve el índice de un elemento
2
Operaciones avanzadas con cadenas
cadena = "bienvenido a mi aplicación"
#pone la primera letra en mayúsculas
print ([Link]())
Bienvenido a mi aplicación
cadena = "Hola Mundo"
#pone todos los caracteres en minúscula
print ([Link]())
hola mundo
cadena = "Hola Mundo"
#pone todos los caracteres en mayúscula
print ([Link]())
HOLA MUNDO
cadena = "Hola Mundo"
#cambia mayúsculas por minúsculas y al revés
print ([Link]())
hOLA mUNDO
cadena = "bienvenido a mi aplicación"
#devuelve el número de veces que aparece un carácter en la cadena
print ([Link]("a"))
3
cadena = "bienvenido a mi aplicación"
#indica la posición de una subcadena en la cadena
print ([Link]("mi"))
13
cadena = "bienvenido a mi aplicación".capitalize()
#devuelve True si la cadena empieza por la subcadena indicada
print ([Link]("Bienvenido"))
Python 20
True
print ([Link]("aplicación"))
False
cadena = "bienvenido a mi aplicación".capitalize()
#devuelve True si la cadena termina por la subcadena indicada
print ([Link]("aplicación"))
True
print ([Link]("Bienvenido"))
False
cadena = "pepegrillo 75"
#devuelve True si hay solo números y letras
print ([Link]())
False
cadena = "pepegrillo"
print ([Link]())
True
cadena = "pepegrillo75"
print ([Link]())
True
cadena = "pepegrillo 75"
#devuelve True si hay solo letras
print ([Link]())
False
cadena = "pepegrillo"
print ([Link]())
True
cadena = "pepegrillo75"
print ([Link]())
False
cadena = "pepegrillo 75"
#devuelve True si hay solo números
print ([Link]())
False
cadena = "7584"
print ([Link]())
True
cadena = "75 84"
print ([Link]())
False
cadena = "75.84"
print ([Link]())
False
buscar = "nombre apellido"
reemplazar_por = "Juan Pérez"
#busca una subcadena y la sustituye por otra
print ("Sr. nombre apellido:".replace(buscar, reemplazar_por))
Sr. Juan Perez
cadena = " cadena "
#elimina espacios antes y después de la cadena
print ([Link]())
cadena
print(",".join(["primero","segundo","tercero"]))
#crea una cadena separando sus elementos con el separador indicado, una coma
"primero, segundo, tercero"
Python 21
print ("primero, segundo, tercero".split(","))
#crea una lista a partir de una cadena donde sus palabras están
#separadas por algún caracter especial, por ejemplo una coma
['primero', 'segundo', 'tercero']
Python 22