Operadores
Insertar elementos
Para insertar un elemento k en una posición i, podemos hacer uso de la función insert(i,k).
La función insert (i,k) agrega un elemento k en la posición i y desplaza hacia adelante todos los valores (incluido el que estaba en la posición i).
Ejemplo.
#insertar un valor
Lista=[] #primero se crea una lista vacía
n=10 # tamaño de la lista
for i in range (n) :
Lista.append(i) #se inicializa con los valores de 0 a 9
print(Lista)
Lista.insert(3,"Esto no estaba aqui")
print(Lista)
#salida
>>[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>[0, 1, 2, 'Esto no estaba aquí', 3, 4, 5, 6, 7, 8, 9]
Eliminar elementos
Para eliminar uno o mas elementos de una lista se usara la palabra reservada del, que eliminar un elemento y re-ordena la lista para que no queden espacios (si no, simplemente usaríamos Lista[i]=[] para dejar un espacio vacío, pero no es la idea).
Sintaxis:
del Lista[i] # elimina el elemento en la posición i
del Lista[i:f]# elimina los elementos desde la posición i hasta la f
Ejemplo:
#eliminar un elemento de una lista
Lista =[] #se crea la lista vacía
for i in range (8): # lista de 8 elementos
Lista.append('Element' + str(i+1)) #se colocan elementos en la lista
print ("El tamaño de la lista es: ", len(Lista))# Lista original //#"Len" retorna el tamaño de una lista
print (" ".join(Lista))
del Lista[len(Lista)-1] #Borra el ultimo elemento de la lista
print("El nuevo tamaño de la lista es: ",len(Lista) ) #podemos ver que la lista disminuye su tamaño
print(" ".join(Lista))# El último elemento no esta
#eliminar varios elementos
del Lista[0:3]
print("El nuevo tamaño de la lista es: ",len(Lista) ) #el tamaño disminuye en 3
#salida
>>El tamaño de la lista es: 8
Element1 Element2 Element3 Element4 Element5 Element6 Element7 Element8
El nuevo tamaño de la lista es: 7
Element1 Element2 Element3 Element4 Element5 Element6 Element7
El nuevo tamaño de la lista es: 4
Element4 Element5 Element6 Element7
Copiar una lista:
Python permite hacer copias de una a lista a otra de una manera sencilla; supongamos que que L es una lista que contiene n elementos y LN es una variable variable cualquiera. Bastara con ejecutar la siguiente instrucción para copiar los elementos de L a LN y volver LN una lista:
LN = L #se copia L en LN
Ejemplo:
#copiar una lista
import random #Librería para generar números aleatorios
Lista=[]
for i in range (0,10):
Lista.append(random.randint(0,100)) # la lista se llena con números aleatorios
Lcopy=Lista #se hace una "copia" de "Lista"
print("Lista original")
print(str(Lista).replace(","," ")) #replace cambia un carácter por otro (solo funciona con strings)
print("Lista copiada")
print(str(Lcopy).replace(","," "))
#Salida
>>Lista original
[27 10 51 51 32 48 50 65 97 13]
Lista copiada
[27 10 51 51 32 48 50 65 97 13]
Hacer una copia de esta forma nos trae grandes problemas si la idea de crear una copia es no modificar la lista original, veamos
Lcopy=Lista #se hace una "copia" de "Lista"
print("Lista original")
print(str(Lista).replace(","," "))
Lcopy[0:5]=[0] #solo se modifica la copia
print("Copia despues de modificarse")
print(str(Lcopy).replace(","," "))
print("se imprime de nuevo la lista original ")
print(str (Lista).replace(","," "))
#salida
>>Lista original
[89 78 72 16 44 34 47 31 96 77]
Copia después de modificarse
[0 34 47 31 96 77]
se imprime de nuevo la lista original
[0 34 47 31 96 77] # ¡La lista original se modifica también!
Como vimos modificar una copia de una lista modifica también la copia original(Lo que no resulta muy útil en muchos caso, ya que no queremos modificar la lista original), esto sucede por que lo que en realidad hacemos no es copiar una lista en otra, si no copiar sus direcciones de memoria, por lo tanto modificar una va modificar la otra.
Para solucionar este problema tenemos que usar sub-listas, así.
Lcopy=Lista[:] # Colocar solo “ : ” copia todos los elementos (Una sublista de todos los elementos)
De esta manera se estan copiando los elementos que estén en “Lista” y no las direcciones de memoria, por lo cual, si se modifica la copia no se va modificar la lista original, veamos:
Lcopy=Lista #se hace una "copia" de "Lista"
print("Lista original")
print(str(Lista).replace(","," "))
Lcopy[0:5]=[0] #solo se modifica la copia
print("Copia despues de modificarse")
print(str(Lcopy).replace(","," "))
print("se imprime de nuevo la lista original ")
print(str (Lista).replace(","," "))
#salida
>>> Lista original
[53 48 19 93 28 48 21 51 51 88]
Copia después de modificarse
[0 48 21 51 51 88]
se imprime de nuevo la lista original
[53 48 19 93 28 48 21 51 51 88]
Recorrer una lista y buscar un valor.
La expresión “for x in Lista:”, nos permite generar un ciclo que se ejecuta tantas veces como elementos tenga nuestra lista, esto resulta muy útil en el caso en que queramos ordenar la lista, o solo buscar algún valor determinado y efectuar alguna operación. Debemos tener en cuenta que esta instrucción almacenará en “x” el valor de lista en la posición que se encuentre de acuerdo a la iteración del ciclo, es decir, si es la iteración 1, se guarda en “x” lo que tenga lista en su primera posición (La posición 0)
Existe una forma indirecta de recorrer una lista y es usando la expresión for i in range (0,len(Lista)), que es un ciclo que va desde 0 hasta el final de las lista.
“x in Lista” también nos sirve para saber si un valor se encuentra dentro de una lista,Para ellos solo debemos usar una condición simple (if x in Lista)
Ejemplo 1:
#Buscar coincidencias entre listas
import random # Librería para generar números aleatorios
Lista=[] # Lista vacía
l=[] # Lista vacía
count=0 # contador
for i in range (0,10): #se genera una lista de 10 elementos
Lista.append(random.randint(0,20)) # se llena con números aleatorios
l.append(random.randint(0,20))
#primero imprimimos ambas listas
for x in: # forma directa de recorrer una lista
print (x, end=" ")
print() # imprime un salto de línea
for y in l: #esto es una alternativa de impresión de una lista
print(y, end=" ")
print()
for i in range (0,len(Lista)): #forma indirecta de recorrer una lista
if l[i] in Lista:
count+=1 # si hay coincidencia se aumenta el contador
print("Las listas coinciden en %d " %count, "valores")
Ejemplo 2:
#Ordenamiento de una lista por inserción
import random
Lista=[]
for i in range (0,10):
Lista.append(random.randint(0,10)) #se llena la lista con números enteros aleatorios
print("Lista desordenada")
print(str(Lista).replace(","," ")) #se imprime la lista desordenada
for i in range (1,len(Lista)): #comienzo desde el segundo elemento
key=Lista[i] #almaceno este valor ya que puede ser remplazado
j=i-1
#Compruebo si el número en la posición anterior a la actual es mayor que el número en la posición actual
while (j>=0 and Lista[j]>key):
#si es mayor los intercambio
Lista[j+1]=Lista[j]
Lista[j]=key
j=j-1 #como el elemento 5,por ejemplo, puede estar entre el 1 y el 2, tenemos que hacer la misma comprobación con todos elementos hacia atrás
#se puede imprimir la lista aquí para ver un paso a paso
print("Lista ordenada")
print(str(Lista).replace(","," ")) #se imprime la lista ordenada