57
LISTAS EN PYTHON

LISTAS EN PYTHON

Embed Size (px)

Citation preview

LISTAS EN PYTHON

UNIDAD I: Programación estructurada y

modular con Python

Ing. Juan Puerta Arce

Temario

• Creación y visualización de Listas

• Funciones y operadores para el manejo de listas

• Uso del bucle for para el manejo de listas

Ing. Juan Puerta Arce

CREACIÓN Y VISUALIZACIÓN DE LISTAS

Ing. Juan Puerta Arce

Ing. Juan Puerta Arce

¿Qué es una lista en python?

Es un conjunto o agrupación ordenada de elementos quepueden ser del mismo tipo o no.

Ing. Juan Puerta Arce

LISTAS EN PYTHON

Una lista se crea agrupando entre corchetes a sus elementos, los cuales deberán estar separados por comas

Ejemplo:

primos = [13, 2, 5, 17, 23]

Lista de nombre primos que contiene 5 números enteros

paises = ['Perú', 'Argentina', 'Chile', 'Brasil']

Lista de nombre paises que contiene 4 datos tipo texto

data = ['Julio', 13.5, 'Juan', 18, 'María', 11.5]

Lista de nombre data que contiene 2 datos tipo real, 1 dato tipo entero y 3 datos tipo texto

Ing. Juan Puerta Arce

Se puede usar la función print para mostrar una lista en pantalla:

Ejemplo:

primos = [13, 2, 5, 17, 23] print('Primera Lista: ', primos)

paises = ['Perú', 'Argentina', 'Chile', 'Brasil'] print('Seguda Lista: ', paises)

data = ['Julio', 13.5, 'Juan', 18, 'María', 11.5] print('Tercera Lista: ', data)

Resultado de la ejecución

Ing. Juan Puerta Arce

TIPS

Una lista puede tener como elementos a otras listas:

Ejemplo:

coordenadas = [[30, 12, 56],[-78, 23, 123]]

print('La lista es: ', coordenadas)

Resultado de la ejecución

Hay 2 listas como elementos de otra lista

TIPS

Una lista en Python se considera como una nueva clase o tipo de dato

Ing. Juan Puerta Arce

Ejemplo:

data = ['Lima', [30, 12, 56], 'Piura',[-78, 23, 123]]

print('La lista es: ', data)

print('Tipo: ', type(data))

Resultado de la ejecución

Ing. Juan Puerta Arce

Usando la función o método range() se pueden crear listas de datos numéricos enteroscon una regla de sucesión

Ejemplo:

lista1 = range(10)

#lista1 = [0,1,2,3,4,5,6,7,8,9]

lista2 = range(4,15)

#lista2 = [4,5,6,7,8,9,10,11,12,13,14]

lista3 = range(5,20,3)

#lista3 = [5,8,11,14,17]

lista4 = range(10,4,-1)

#lista4 = [10,9,8,7,6,5]

FUNCIONES Y OPERADORES PARA EL MANEJO DE LISTAS

Ing. Juan Puerta Arce

Ing. Juan Puerta Arce

¿Cómo saber el tamaño de una lista (cantidad de elementos que contiene)?

Se usa la función o método len()

Ejemplo:

datos = ['Voltaje', 220, 'Corriente', 1.5]

print('El tamaño de la lista es:',len(datos))

Resultado de la ejecución

center = ['A', [1,2], 'B']

print('El tamaño de la lista es:',len(center))

Resultado de la ejecución

FUNCIONES Y OPERADORES PARA EL MANEJO DE LISTAS

Ing. Juan Puerta Arce

Para utilizar los elementos almacenados en una lista se toman en cuenta índices,los cuales referencian la posición que cada elemento ocupa en la lista

fecha = ['Domingo', 3, 'Abril', 2016]

0 1 2 3

índices

Ejemplo:

fecha[0] hace referencia al primer elemento: ‘Domingo’fecha[1] hace referencia al segundo elemento: 3fecha[2] hace referencia al tercer elemento: ‘Abril’fecha[3] hace referencia al cuarto elemento: 2016

Operaciones con los elementos de una lista

Ing. Juan Puerta Arce

Ejemplo:

poblacion = ['Perú', 25232000 , 'Colombia', 3741290, 'Uruguay', 3247000]

#imprimiendo los datos:print('Países','Habitantes',sep='\t')print('---------------------')print(poblacion[0],poblacion[1],sep='\t')print(poblacion[2],poblacion[3],sep='\t')print(poblacion[4],poblacion[5],sep='\t')

Resultado de la ejecución

Ing. Juan Puerta Arce

Ejemplo:

poblacion = ['Perú', 25232000 , 'Colombia', 3741290, 'Uruguay', 3247000]

#sumando las poblaciones:suma = poblacion[1] + poblacion[3] + poblacion[5]

print('La población total es:',suma,'habitantes')

Resultado de la ejecución

Ing. Juan Puerta Arce

TIPS

Tener cuidado en caso una lista tenga alguna otra lista como elemento:

notas = ['Carlos Pastor', [12, 15.5, 16], 'María Romero', [15.5, 18,15]]

#calculando el promedio de cada alumno:promCarlos = (notas[1][0] + notas[1][1] + notas[1][2])/3

promMaria = (notas[3][0] + notas[3][1] + notas[3][2])/3

#mostrando los promedios:print('Alumno','Promedio',sep='\t\t')print(notas[0],round(promCarlos),sep='\t')print(notas[2],round(promMaria),sep='\t')

Ejemplo:

Ing. Juan Puerta Arce

Resultado de la ejecución del ejemplo anterior:

Resultado de la ejecución

notas = ['Carlos Pastor', [12, 15.5, 16], 'María Romero', [15.5, 18,15]]

notas[1]

[12, 15.5, 16]

notas[1][0] notas[1][1] notas[1][2]

Importante:

Ing. Juan Puerta Arce

TIPS

No se puede extraer un elemento fuera del rango de la lista:

numeros = [45, 78, 23, 123, 8]

#se desea imprimir el séptimo elemento de la listaprint(numeros[6])

Ejemplo:

Al ejecutar el programa saldrá un mensaje de error indicando que el índice estáfuera del rango

0 1 2 3 4

Ing. Juan Puerta Arce

TIPS

Python permite el uso de índices con valor negativo:

Ejemplo:

numeros = [45, 78, 23, 123 , 8]

#mostrando los elementos de la lista desde la posición finalprint(numeros[-1])print(numeros[-2])print(numeros[-3])print(numeros[-4])print(numeros[-5])

Resultado de la ejecución

Usar índice -1 indica la referencia al último elemento de la lista, desde ahí se puede bajar el valor del índice hasta llegar a referenciar el primer elemento

Los elementos de una lista pueden ser modificados encualquier momento del programa tanto en valor como entipo

Importante:

Ing. Juan Puerta Arce

Ing. Juan Puerta Arce

Ejemplos:

letras = ['A','B','C','D','E','F','G','H']

letras[1] = 8 #se sustituye el segundo elemento 'B' por el número 8print('La lista ahora es:',letras)

Resultado de la ejecución

letras = ['A','B','C','D','E','F','G','H']

letras[1] = [8] #se sustituye el segundo elemento 'B' por la lista [8]print('La lista ahora es:',letras)

Resultado de la ejecución

Modificación de los elementos de una lista

Ing. Juan Puerta Arce

letras = ['A','B','C','D','E','F','G','H']

letras[3] = 'UPC' #se sustituye el 4to. elemento 'D' #por el texto 'UPC'

print('La lista ahora es: ',letras)

Resultado de la ejecución

letras = ['A','B','C','D','E','F','G','H']

letras[0] = [0,0,0] #se sustituye el primer elemento 'A' #por la lista [0,0,0]

print('La lista ahora es: ',letras)

Resultado de la ejecución

Ing. Juan Puerta Arce

Formación de sublistas

Una sublista se forma extrayendo una parte o “porción” de otra lista

Para extraer una sublista de una lista se emplea el siguiente formato:

nombre[a:b]

Donde:

nombre: Indica el nombre de la lista de la cual se extraerá la sublista

a: Indica el valor del índice a partir del cual se extraerá la sublista

b: Indica el valor del límite superior para extraer la sublista. El valor de b no seincluye

Ejemplo:

dias=['Lunes','Martes','Miercoles','Jueves','Viernes','Sábado','Domingo']

subl = dias[3:6] #se extrae de la lista dias los elementos de los #índices 3,4,5 (subl es la sublista formada)

print('Dias seleccionados:',subl)

Resultado de la ejecución

3 4 5

Ing. Juan Puerta Arce

Ing. Juan Puerta Arce

TIPS

Otras formas de crear sublistas:

dias=['Lunes','Martes','Miercoles','Jueves','Viernes','Sábado','Domingo']

subl = dias[4:5] #se forma una sublista que contiene como único elemento #aquel que se encuentra en el índice 4 de la lista dias

print('Dias seleccionados:',subl)

subl = dias[2:2] #se forma una sublista vacía ya que no tiene sentido #extraer elementos desde el índice 2 al 1

print('Dias seleccionados:',subl)

subl = dias[:4] #se forma una sublista con los elementos de los índices#0,1,2 y 3 de la lista dias

print('Dias seleccionados:',subl)

subl = dias[4:] #se forma una sublista con los elementos de los índices#4,5 y 6 de la lista dias

print('Dias seleccionados:',subl)

Ing. Juan Puerta Arce

Resultado de la ejecución del ejemplo anterior:

Resultado de la ejecución

Ing. Juan Puerta Arce

Si se desea copiar el contenido de una lista en otra:

letras = ['A','B','C','D','E','F','G','H']

clona = letras[:] #se forma la lista clona con todos los elementos de #la lista letras

print('La listaA es:',clona)

Resultado de la ejecución

TIPS

Ejemplo:

Ing. Juan Puerta Arce

letras = ['A','B','C','D','E','F','G','H']

letras[2:5] = ['y','y','y'] #se sustituye la sublista ['C','D','E']#por la lista ['y','y','y']

print('La lista ahora es:',letras)

Resultado de la ejecución

letras = ['A','B','C','D','E','F','G','H']

letras[1:4] = ['x','x'] #se sustituye la sublista ['B','C','D']#por la lista ['x','x']

print('La lista ahora es:',letras)

Resultado de la ejecución

Sustitución de una sublista

Ejemplos:

Ing. Juan Puerta Arce

letras = ['A','B','C','D','E','F','G','H']

letras[2:5] = ['@'] #se sustituye la sublista ['C','D','E']#por la lista ['@']

print('La lista ahora es:',letras)

Resultado de la ejecución

Ing. Juan Puerta Arce

Concatenación de 2 o mas listas:

Para ello se utiliza el operador +

Ejemplo:lista1 = ['Algebra', 'Aritmética','Geometría']

lista2 = [2016, 2017]

#se concatena la lista1 y lista2 para formar lista3lista3 = lista1 + lista2

print('Lista3 es:',lista3,'y su tamaño es:',len(lista3))

Resultado de la ejecución

Concatenar listas significa juntar sus elementos para formar una lista nueva

Ing. Juan Puerta Arce

TIPS

Cuidado al utilizar el operador + para concatenar listas:

Ejemplos:

lista1 = ['A','B','C','D']

lista2 = lista1 + 5

Error!, no se puede concatenar un lista con un dato tipo numérico

lista1 = ['A','B','C','D']

lista2 = lista1 + 'VOCALES'

Error!, no se puede concatenar un lista con un dato tipo texto

lista1 = ['A','B','C','D']

lista2 = lista1 + [5]

Correcto, al colocar [] al dato ‘VOCALES’ ya se formóuna lista de 1 elemento y se puede concatenar

lista2 sería [‘A’, ‘B’, ‘C’, ‘D’, 5]

lista1 = ['A','B','C','D']

lista2 = lista1 + ['VOCALES']

Correcto, al colocar [] al dato 5 ya se formó una lista de 1 elemento y se puede concatenar

lista2 sería [‘A’, ‘B’, ‘C’, ‘D’, ‘VOCALES’]

TIPS

Ing. Juan Puerta Arce

TIPS

Ejemplos:

letras = ['A','B','C','D','E','F','G','H']

letras.extend([4.16,'pi']) #concatena la lista [4.16,'pi'] a la #lista letras

print('La lista ahora es:',letras)

Resultado de la ejecución

Se puede usar la función extend() para concatenar listas

reserv = ['eof','end']

reserv.extend('fff') #Se concatena el texto 'fff' a la lista reserv.#Para este caso se toma al texto 'fff' como la #lista:['f','f','f']

print('Ahora la lista es:',reserv)

Resultado de la ejecución

Ing. Juan Puerta Arce

Ing. Juan Puerta Arce

El tamaño de una lista puede aumentar insertandoelementos en la misma.

Importante:

Ing. Juan Puerta Arce

Inserción de elementos en una lista:

letras = ['A','B','C','D','E','F','G','H']

letras[2:2] = [100] #inserta la lista [100] desde la posición 2 de la #lista letras

print('La lista ahora es:',letras)

Resultado de la ejecución

letras = ['A','B','C','D','E','F','G','H']

letras[7:7] = [3,8] #inserta la lista [3,8] desde la posición 7 de la #lista letras

print('La lista ahora es:',letras)

Resultado de la ejecución

Ejemplos:

Ing. Juan Puerta Arce

letras = ['A','B','C','D','E','F','G','H']

letras[0:0] = 'upc' #inserta el texto 'upc' desde la posición 0 de la #lista letras. Para este caso se toma al texto 'upc' como la lista ['u','p','c']

print('La lista ahora es:',letras)

Resultado de la ejecución

letras = ['A','B','C','D','E','F','G','H']

letras[8:8] = [0,0,0,0] #inserta la lista [0,0,0,0] desde la posición 8 #de la lista letras

print('La lista ahora es:',letras)

Resultado de la ejecución

Ing. Juan Puerta Arce

TIPSTIPS

Se puede usar la función insert() para insertar elementos en una determinada posición de la lista

letras = ['A','B','C','D','E','F','G','H']

letras.insert(2,'011001') #inserta el texto '011001' en la posición 2 #de la lista letras

print('La lista ahora es:',letras)

Resultado de la ejecución

Ejemplos:

Ing. Juan Puerta Arce

languajes = ['python','java','c++']

languajes.insert(1,['f','h','k']) #inserta la lista ['f','h','k']#en la posición 1 de la lista #languajes

print('La lista ahora es:',languajes)

Resultado de la ejecución

TIPSTIPS

Ing. Juan Puerta Arce

Se puede usar la función append() para insertar un elemento al final de una lista

Ejemplo:

letras = ['A','B','C','D','E','F','G','H']

letras.append(1000) #inserta el entero 1000 al final de la lista #letras

print('La lista ahora es:',letras)

Resultado de la ejecución

El tamaño de una lista puede disminuir eliminandoelementos en la misma.

Importante:

Ing. Juan Puerta Arce

Ing. Juan Puerta Arce

Eliminación de elementos en una lista:

letras = ['A','B','C','D','E','F','G','H']

letras[0:3] = [] #elimina de la lista letras la sublista ['A','B','C']

print('La lista ahora es:',letras)

Resultado de la ejecución

Otra opción es utilizar la palabra reservada del

letras = ['A','B','C','D','E','F','G','H']

del letras[0:3] #elimina de la lista letras la sublista ['A','B','C']

print('La lista ahora es:',letras)

Ing. Juan Puerta Arce

letras = ['A','B','C','D','E','F','G','H']

letras[7:8] = [] #elimina de la lista letras el elemento final

print('La lista ahora es:',letras)

Resultado de la ejecución

Otra opción es utilizar la palabra reservada del

letras = ['A','B','C','D','E','F','G','H']

del letras[7] #elimina de la lista letras el elemento final

print('La lista ahora es:',letras)

Ing. Juan Puerta Arce

TIPS

Si se desea eliminar una lista de la memoria:

letras = ['A','B','C','D','E','F','G','H']

del letras #elimina la lista letras de la memoria

Si se desean eliminar todos los elementos de una lista:

letras = ['A','B','C','D','E','F','G','H']

letras[:] = [] #elimina todos los elementos la lista letras

print('La lista ahora es:',letras)

La lista letras ya no existe en la memoria y por lo tanto ya no puede utilizarse por ninguna función

Resultado de la ejecución

Ejemplo:

Ejemplo:

Ing. Juan Puerta Arce

TIPS

Se pude usar la función remove() para eliminar un elemento de una lista:

Ejemplo:

codigos = ['00','01','50','DS','E2','F9','G2','HQ']

codigos.remove('E2') #Si se encuentra el dato 'E2' se elimina de la lista

print('Ahora la lista es: ',codigos)

Resultado de la ejecución

Si hay dos o mas datos iguales en la lista, remove elimina el primer dato que encuentra

Si el dato no esta en la lista, remove retorna una excepción y detiene la ejecución.

Ing. Juan Puerta Arce

Ejemplo: función index()

codigos = ['00','01','50','DS','E2','F9','G2','HQ']

p = codigos.index('50') #Busca el elemento '50' en la lista.#Si se encuentra retorna el índice#de su posición

print('El dato se encontró en la posición:',p)

Resultado de la ejecución

Si hay dos o mas datos iguales en la lista, index retorna la posición de primer dato encontrado.

Si el dato no esta en la lista, index retorna una excepción y detiene la ejecución.

Búsqueda de elementos en una lista:

Ejemplo: Uso de la palabra reservada in

Ing. Juan Puerta Arce

codigos = ['00','01','50','DS','E2','F9','G2','HQ']

p = '00' in codigos #si '00' esta en la lista codigos, se retorna #True, caso contrario se retorna False

print('dato retornado es: ',p)

Resultado de la ejecución

Ing. Juan Puerta Arce

USO DEL BUCLE FOR PARA EL MANEJO DE LISTAS

Ing. Juan Puerta Arce

elemento1 elemento 2 elemento 3 . . . . . . . . . . . . . Elemento N-1

0 1 3 N-1

for i in range(N)

El bucle for permite a través de la variable de iteración, recorrer cada elemento de una lista haciendo referencia a su índice

lista

Ejemplo:

from random import *

#se lee la cantidad de números a almacenarN = int(input('Ingrese el tamaño de la lista:'))

numeros = [] #se crea una lista vacía

for i in range(N): #recorre cada índice de la listanumeros.insert(i,randint(10,99)) #se agrega un valor aleatorio

#de 2 dígitos a cada elemento#de la lista

#se muestra cada elemento almacenado

print('elemento',i,':',numeros[i])

Un programa que crea una lista para almacenar N números enteros aleatoriosde 2 cifras y muestra los valores almacenados en la pantalla

Solución:

Ing. Juan Puerta Arce

Ing. Juan Puerta Arce

Resultado de la ejecución del ejemplo anterior

Resultado de la ejecución

Ing. Juan Puerta Arce

Proceso de iteración del for en el resultado del ejemplo anterior:

Para i = 0:

28numeros =0

Para i = 1:

numeros = 28

0

57

1

Para i = 2:

numeros = 28

0

57

1

56

2

Inserta en la posición 0 de la lista numerosun valor aleatorio de 2 dígitos

Imprime: 'elemento 0 : 28'

Inserta en la posición 1 de la lista numerosun valor aleatorio de 2 dígitos

Imprime: 'elemento 1 : 57'

Inserta en la posición 2 de la lista numerosun valor aleatorio de 2 dígitos

continua

Ing. Juan Puerta Arce

Para i = 3:

Para i = 4:

Para i = 5:

numeros = 28

0

57

1

56

2

Inserta en la posición 3 de la lista numerosun valor aleatorio de 2 dígitos

60

3

numeros = 28

0

57

1

56

2

Inserta en la posición 4 de la lista numerosun valor aleatorio de 2 dígitos

60

3

20

4

numeros = 28

0

57

1

56

2

Inserta en la posición 5 de la lista numerosun valor aleatorio de 2 dígitos

60

3

20

4

52

5

Imprime: 'elemento 3 : 60'

Imprime: 'elemento 4 : 20'

Imprime: 'elemento 5 : 52'

continua

Ing. Juan Puerta Arce

Para i = 6:

Para i = 7:

Para i = 8:

numeros = 28

0

57

1

56

2

Inserta en la posición 6 de la lista numerosun valor aleatorio de 2 dígitos 60

3

20

4

52

5Imprime: 'elemento 6 : 47'

47

6

numeros = 28

0

57

1

56

2

Inserta en la posición 7 de la lista numerosun valor aleatorio de 2 dígitos 60

3

20

4

52

5Imprime: 'elemento 7 : 49'

47

6

49

7

numeros = 28

0

57

1

56

2

Inserta en la posición 8 de la lista numerosun valor aleatorio de 2 dígitos

60

3

20

4

52

5Imprime: 'elemento 8 : 44'

47

6

49

7

44

8

Para i = 9:

numeros = 28

0

57

1

56

2

Inserta en la posición 9 de la lista numerosun valor aleatorio de 2 dígitos

60

3

20

4

52

5

Imprime: 'elemento 9 : 13'

47

6

49

7

44

8

13

9

Ing. Juan Puerta Arce

Ejemplo:

Un programa que genera 2 listas. En la primera se almacenan el nombre de Npersonas, y en la segunda su edad. Dichos datos son leídos y finalmente mostrados en pantalla

from random import *

#se lee la cantidad de datos a almacenarN = int(input('Ingrese el tamaño de la lista:'))

nombres = [] #se crea una lista para almacenar los nombresedades = [] #se crea una lista para almacenar las edades

for i in range(N): #recorre cada índice de la listaprint('Ingrese nombre',i+1,':',end='') nombre = input() #se lee el nombre nombres.insert(i,nombre) #se almacena el nombre leído en la lista

#se lee la edadedad = int(input('Ingrese su edad:'))edades.insert(i,edad) #se almacena la edad en la lista

#se muestran los datos en pantallaprint('\n\nDatos registrados:\n')for i in range(N): #recorre cada índice de la lista

print(nombres[i],edades[i],sep='\t')

Solución:

Ing. Juan Puerta Arce

Resultado de la ejecución del ejemplo anterior

Ing. Juan Puerta Arce

Resultado de la ejecución

ResumenLas listas en Python son agrupaciones ordenadas de elementos del mismo tipo o no

Una lista en python es un nuevo tipo o clase llamado list

Una lista puede contener como elementos incluso otras listas

Para saber el tamaño de una lista se utiliza la función len

Se puede modificar el dato de una lista tanto en valor y por ende en tipo

Para trabajar con los elementos de una lista se toman cuenta índices

Los índices referencian la posición de un elemento en la lista

Ing. Juan Puerta Arce

Para extraer sublistas de una lista se utiliza el operador : como rango entre el límite inicial y final

Una sublista es una parte o porción que se extrae de una lista mayor

El tamaño de una lista puede aumentar a través de operaciones de inserción de elementos

El tamaño de una lista puede reducirse a través de operaciones de eliminación de elementos

Se pueden concatenar 2 o mas listas usando el operador + (tener cuidado en que ambos operandos sean listas)

El uso del bucle for es importante para recorrer elementos de una lista y hacer un procesamiento de los mismos.

Se puede usar la función range para crear listas numéricas con una regla de sucesión