Está en la página 1de 4

Computación Python

Secuencia 2
Listas y for

Las listas es una estructura fundamental en la programación con Python. Podemos crear una
lista de valores asignando directamente una colección de estos, separados por comas y delimitados
por corchetes. Por ejemplo:

A = [3,0,’k’,0.5,1,’python’]

Podemos identificar al primer elemento como A[0], al segundo como A[1], etc. e incluso podemos
referirnos al último término como A[-1], al penúltimo como A[-2], etc. de modo que:

print(A[0])]

mostrará el número 3, y

print(A[-1])]

mostrará python. También podemos aumentar elementos a la lista con el método append, como
sigue:

A = [3,0,’k’,0.5,1,’python’]
A.append(7)

Con lo cual la lista quedará como A = [3,0,’k’,0.5,1,’python’,7]

La función range, devuelve una lista con el número de elementos que recibe como argumento.
Por ejemplo:

A = range(5)
asigna a A la lista [0,1,2,3,4]

A = range(2,7)
asigna a A la lista [2,3,4,5,6]

A = range(3,10,2)
asigna a A la lista [3,5,7,9].

En ocasiones, es necesario crear listas más especiales, como por ejemplo, una lista que contenga
100 ceros. Serı́a muy tedioso crear la lista dando directamente los valores, como en el último ejem-
plo, ası́ que podemos recurrir a la siguiente estructura:

B = [0 for i in range(100)]

1 R. Espejel
Python Computación

De este modo, tendremos que el cero se “replica” dentro de la lista, teniendo una lista con 100
ceros. En general, esta estructura, replica una expresión que puede (o no) depender de la variable
involucrada en el for:

B = [expresión for k in Lista]

Actividad: Captura y ejecuta el siguiente programa para comprobar que se le asigna a B la


lista [6,0,14,1.0,2,0.5].

A = [3,0,7,0.5,1,0.25]
B = [2*n for n in A]
print (B)

Como puedes ver, esta estructura es muy útil para hacer operaciones elemento a elemento sobre
listas.
Otra aplicación es el cálculo de sumatorias, ya que Python tiene incorporada la función sum,
que toma como argumento una lista y devuelve la suma de sus elementos. Por ejemplo, si queremos
calcular la sumatoria

5
X
(2k − 1)
k=1

podrı́amos implementar el siguiente programa

B = [2*k-1 for k in range(1,6)]


print B
s = sum(B)
print ’La suma es’,s

Al ejecutarlo obtenemos lo siguiente:

[1, 3, 5, 7, 9]
La suma es 25

Actividad: Completa las metas para elaborar un programa que simule 1000 lanzamientos de
2 dados, y que en un arreglo A, que comienza con ceros en cada una de sus 12 entradas, se vaya
contando el número de veces que la suma de los dados corresponde a cada entrada. Es decir, la pri-
mera entrada (A[0]) se incrementa cuando la suma de los dados es 1, la segunda (A[1]) cuando
la suma de los dados es 2, la tercera (A[2]) cuando la suma de los dados es 3, etc. El programa
debe mostrar el arreglo final.

Meta 1: Comencemos por simular el lanzamiento de 2 dados. Usaremos la función randint, incluida
en la librerı́a random, la cual genera un número aleatorio entero en el intervalo definido por los
argumentos que recibe:

from random import randint


d1 = randint(1,6)
d2 = randint(1,6)
print (’El dado 1 cayo en %d, el dado 2 cayo en %d.’ % (d1,d2))

R. Espejel 2
Computación Python

Meta 2: Calculemos la suma y la mostramos para comprobar el resultado:

from random import randint


d1 = randint(1,6)
d2 = randint(1,6)
s = d1+d2
print (’El dado 1 cayo en %d, el dado 2 cayo en %d. La suma es %d’ % (d1,d2,s) )

Meta 3: Construyamos la lista A con ceros en sus 12 entradas. Incrementemos aquella que coincide
con la suma de los dados. Recuerda que la primer entrada es A[0]:

from random import randint


A = [0 for i in range(12)]
d1 = randint(1,6)
d2 = randint(1,6)
s = d1+d2
A[s-1] = A[s-1] +1
print (’El dado 1 cayo en %d, el dado 2 cayo en %d. La suma es %d’ % (d1,d2,s))
print (A)

El programa mostrará algo como lo siguiente:

El dado 1 cayo en 2, el dado 2 cayo en 2. La suma es 4


[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]

El lugar de la entrada con el uno, debe coincidir con la suma de los dados, en este caso, la suma es
4, y la entrada con el uno es la cuarta.

Meta 4: Incluyamos las lı́neas adecuadas en un ciclo for y eliminemos el primer print para
simplificar la salida:

from random import randint


A = [0 for i in range(12)]
for n in range(1000):
d1 = randint(1,6)
d2 = randint(1,6)
s = d1+d2
A[s-1] = A[s-1] +1
print (A)

Ahora la salida será algo como lo siguiente:


[0, 25, 53, 86, 111, 155, 173, 122, 116, 76, 57, 26]

La primer entrada siempre será cero, ya que es imposible que la suma de dos dados sea uno. Ahora
comprobemos que la suma de todas las entradas de A es 1000:

3 R. Espejel
Python Computación

from random import randint


A = [0 for i in range(12)]
for n in range(1000):
d1 = randint(1,6)
d2 = randint(1,6)
s = d1+d2
A[s-1] = A[s-1] +1
print (A)
print (’la suma es’,sum(A))

Meta 5: Por último, podemos calcular la probabilidad a la que corresponde cada entrada, creando
la lista B como cada una de las entradas de A, divididas entre 1000; ahora la suma debe ser uno.

from random import randint


A = [0 for i in range(12)]
for n in range(1000):
d1 = randint(1,6)
d2 = randint(1,6)
s = d1+d2
A[s-1] = A[s-1]+1
s1 = sum(A)
print A
print (’la suma es’,s1)
B = [k/1000.0 for k in A]
s2 = sum(B)
print B
print (’la suma es’,s2)

R. Espejel 4

También podría gustarte