
Es necesario tener precaución cuando se intenta copiar una lista.
a = list("514")
b = a
b[0] = 1000
print("a=",a)
print("b=",b)
¿Cómo solucionar el problema anterior?
a = list("514")
b = list(a)
b[0] = 1000
print("a=",a)
print("b=",b)
Esto también afecta a las funciones.
def funcion_malvada(lista):
    lista.append(10)
    return sum(lista)
L=[1,2,3,4]
print(L)
print(funcion_malvada(L))
print(L)
¿Cómo solucionar el problema anterior?
L=[1,2,3,4]
print(L)
print(funcion_malvada(list(L)))
print(L)
La función list(L) crea una copia de una la lista L, así no se modifica la original.
Una asignatura universitaria almacena la lista del curso y sus notas en listas. Todas estas están relacionadas por sus índice.
curso=['Simón','Sebastian','Rodrigo','Angélica','Pablo','Francisca']
c1=[90,60,80,100,75,70]
c2=[80,70,70,75,90,100]
c3=[65,100,90,90,100,80]
Cree un programa que genere e imprima el promedio de cada alumno. Además, muestre el promedio de todo el curso.
promedios=[]
for indice in list(range(len(curso))):
    prom=[c1[indice], c2[indice], c3[indice]]
    promedios.append(round(sum(prom)/len(prom)))
    print("El promedio de",curso[indice],"es",promedios[indice])
print("El promedio del curso es", round(sum(promedios)/len(promedios)))
Realice una función que reciba las listas curso y promedios como parámetros y determine el alumno con mayor promedio del curso.
def mejor(curso, promedios):
    mayor=-1
    
    for indice in list(range(len(curso))):
        if promedios[indice] > mayor: #que pasa si >=?
            mayor=promedios[indice]
            mejor=curso[indice]
    
    return mejor
print(mejor(curso,promedios))
La librería random incluye funciones para selección aleatoria desde listas. Echemos un vistazo a la función choice.
El Loto es un juego de azar en donde se seleccionan aleatoriamente 6 números, sin repetirse, de una tombola con valores entre el 1 y el 41. Desarrolle un programa que simule un sorteo.
from random import randint
n1=randint(1,41)
n2=randint(1,41)
while n2==n1:
    n2=randint(1,41)
    
n3=randint(1,41)
while n3==n1 or n3==n2:
    n3=randint(1,41)
n4=randint(1,41)
while n4==n1 or n4==n2 or n4==n3:
    n4=randint(1,41)
n5=randint(1,41)
while n5==n1 or n5==n2 or n5==n3 or n5==n4:
    n5=randint(1,41)
n6=randint(1,41)
while n6==n1 or n6==n2 or n6==n3 or n6==n4 or n6==n5:
    n6=randint(1,41)
    
print("Los numeros sorteados son:",n1,n2,n3,n4,n5,n6)
from random import choice
sorteo=[]
tombola=list(range(1,41))
while len(sorteo)<6:
    x=choice(tombola)
    sorteo.append(x)
    tombola.remove(x)
print("Los numeros sorteados son:", sorteo)