Download - 2 Hoja estructuras simples
Departamento Académico de Computación, ITAM otoño 2015
Hoja 2. Estructuras simples: textos, sucesiones, listas y conjuntos
1. Manipulación de textos. Un texto en computación es una cadena de
símbolos o caracteres, por ejemplo, una sucesión de letras del alfabeto,
números y espacios tecleados. Por ejemplo, el identificador usado por el
Servicio de Administración Tributaria (SAT) es un texto estandarizado, el
Registro Federal de Contribuyentes (RFC); otros ejemplos son la Clave Única
de Registro de Población (CURP) y la Clave Bancaria Estandarizada (CLABE).
Considere el siguiente ejemplo hipotético, el RFC de cierto contribuyente,
Bernardo Reyes Ogazón, nacido el 20 de agosto de 1949:
REOB490820RH1.
Como nos han dicho, el RFC se forma con las letras iniciales de los apellidos
y nombres, la fecha de nacimiento y una clave de tres letras y números.
Para la manipulación del texto en su totalidad o en partes, Python y otros
lenguajes de programación utilizan índices cuyos valores son los números
naturales, es decir, una sucesión de números enteros que se inicia en cero.
Si queremos referirnos a una letra o carácter del texto, usamos un valor del
cero al valor (n-1), donde n es la cantidad de símbolos o caracteres que
componen el texto. Para indicar el índice, se utilizan los corchetes [ ].
Veamos algunos ejemplos:
Si se aplica la función type() a un texto se obtiene str que es el identificador
de string:
Departamento Académico de Computación, ITAM otoño 2015
Estos ejemplos muestran dos casos de índices inválidos:
La cantidad de símbolos que componen el texto puede obtenerse con la
función len():
Los corchetes [ ] también pueden usarse para referirse a un segmento del
texto, indicando el inicio, final e incremento de la sucesión de enteros,
separando con dos puntos :,
[ inicio : final: incremento]
Por ejemplo, separemos la parte relacionada con el nombre de la fecha de
nacimiento:
También es posible utilizar una notación abreviada, omitiendo los valores
del índice sin eliminar el signo de dos puntos : . Cuando se omite los
límites y el incremento, se usan los valores obvios (el mínimo, el máximo y
la unidad). Por ejemplo,
Departamento Académico de Computación, ITAM otoño 2015
Cuando se trata de índices negativos para el inicio y final, Python los
interpreta como valores relativos al final del texto. Veamos algunos
ejemplos,
Note que si el valor de inicio es mayor o igual que el valor final para un
incremento de 1, el resultado del texto es el texto nulo, comillas o
apóstrofos vacíos:
Cuando se define un texto, se define cierto objeto sujeto a la acción de
ciertas funciones y métodos predefinidos. A continuación se ilustran
algunos de los métodos para los textos que permiten aplicar ciertas
operaciones:
Departamento Académico de Computación, ITAM otoño 2015
De manera más general, los métodos disponibles para textos pueden ser
listados en un menú contextual desplegado al oprimir el tabulador Tab en
el modo de edición:
Ahora veamos un caso particular con el uso de un operador aritmético
que puede operar sobre textos. El signo de más + permite unir o
concatenar textos:
Departamento Académico de Computación, ITAM otoño 2015
Por último, hagamos notar una característica importante de los textos: los
textos deben tratarse como objetos inmutables (otros ejemplos incluyen
los números y las tuplas, tratadas más adelante). Esto se puede apreciar
en el siguiente ejemplo donde se intenta cambiar una letra de una frase:
Como se muestra, el problema puede ser resuelto creando un nuevo texto
con el cambio, acción que no modifica el texto original.
2. Uso de listas. Python utiliza los corchetes, o “paréntesis cuadrados”, [ ]
para definir listas de objetos, en particular valores textuales y numéricos,
las cuales son agregados de objetos indexados. De manera similar a los
textos, las listas son manejadas por índices. Por ejemplo,
Departamento Académico de Computación, ITAM otoño 2015
Ejercicio. Aplique la función type() a una lista creada y observe el resultado.
Otro ejemplo, que ilustra el alcance de la estructura, con una lista de listas:
Como se muestra en la figura anterior, las listas están sujetas a métodos, de
manera similar a los textos, que permiten transformarlas. Sin embargo, a
diferencia de los textos, las listas son objetos mutables, es decir pueden
cambiar o actualizar sin perder el identificador (guardado en la memoria) que
tienen al ser creados. Otros objetos mutables
3. La función range(). Python permite generar listas de sucesiones de
números enteros que son de utilidad en las aplicaciones con la función
range(). Por ejemplo, escribamos algunas secuencias después de
consultar la forma general de escritura, en la documentación de ayuda, de
la función range():
Departamento Académico de Computación, ITAM otoño 2015
4. Operaciones con listas.
Cuando se crea una lista numérica es posible realizar operaciones simples
como suma y producto de los números, utilizando las funciones sum(),
mean(), prod(). Por ejemplo,
Departamento Académico de Computación, ITAM otoño 2015
Las listas pueden generarse a partir de otras listas empleando operadores
y funciones. Por ejemplo, los operadores aritméticos + y * permiten
juntar y multiplicar listas:
Otro ejemplo,
5. List comprehension. Las listas pueden generarse a partir de una notación
llamada list comprehension que aplica una operación, según cierta
expresión, a cada elemento de una lista. Esta aplicación repetida a cada
elemento de la lista también se denomina iteración. La sintaxis que
debemos aplicar para generar una lista a partir de otra es la siguiente:
nueva lista= [expresión for variable in lista original]
Departamento Académico de Computación, ITAM otoño 2015
Por ejemplo, generemos las potencias enteras de 2 desde 20 a 210. Para
esto usemos una expresión 2n para generar las potencias con la variable
muda n que nos permita referirnos a la potencia y la lista de los números
del 0 al 10:
Como un caso más práctico, podemos calcular el impuesto al valor agregado
(IVA) que debe descontarse de una lista de precios:
Ejercicio: Para las secuencias sugeridas a continuación, genere listas con los 30 primeros valores y asígneles un nombre. Los valores deben mostrarse en notación decimal.
, ...
, ...
,...
Departamento Académico de Computación, ITAM otoño 2015
6. Sucesiones o tuplas. Python utiliza el nombre de tupla para cualquier
sucesión de valores u objetos separados por comas. Las tuplas son
objetos muy básicos y útiles. A continuación se muestran dos ejemplos:
Como muestra en el resultado de la ejecución, al definir tuplas puede
usarse paréntesis (paréntesis curvos). Asimismo, las tuplas son objetos
indexados y, al igual que los textos, son objetos inmutables.
Como objetos muy básicos, las tuplas tienen dos métodos .count() e
.index():
Departamento Académico de Computación, ITAM otoño 2015
Con el fin de ilustrar la relación que existe entre las tuplas y otros objetos,
veamos los siguientes dos ejemplos, aplicando las funciones tuple() y list()
para crear objetos de tipo distinto:
7. Conjuntos. Python permite definir agregados de objetos no ordenados, es
decir, sin un orden impuesto por un índice. Al definir un conjunto se
habilita los métodos que permiten aplicar operaciones de conjuntos,
como la unión, la intersección y la diferencia. Veamos algunos ejemplos,
En un universo de números enteros positivos entre 1 y 50, se definen dos
conjuntos: el los números pares y los múltiplos de tres:
Departamento Académico de Computación, ITAM otoño 2015
A partir de los conjuntos definidos, se obtienen otros conjuntos, aplicando
operaciones de conjuntos:
Una manera muy directa de definir conjuntos consiste agrupar los elementos
con llaves { }, enumerando los elementos como una tupla (separando los
elementos con comas). Por ejemplo,
8. (Tema opcional) Ejemplos de lectura de archivos. Cuando la información
se guarda en archivos, Python permite llevar a cabo las lectura y escritura
de datos. Tratemos dos casos relativamente simples de archivos que
contienen información textual y numérica en un archivo de texto con el
objetivo de crear una lista con la información textual.
Caso 1. Lectura de un archivo con textos. Supongamos que tenemos un
archivo de texto llamado nombres.txt con nombres propios. El inicio del
archivo debería ser como se ilustra a continuación:
Departamento Académico de Computación, ITAM otoño 2015
A continuación se listan instrucciones para abrir el archivo, leer un texto
con la información y cerrar el archivo. Después se manipula el texto para
producir la lista de nombres:
Caso 2. Lectura de un archivo con números. Supongamos que se tiene un
archivo con valores numéricos del tipo de cambio del USD de los días
previos al 15 de agosto de 2015: