Tipos de estructura de datos en informática
Clasificado en Informática
Escrito el en español con un tamaño de 24,6 KB
Guiá Python
Historia
Lenguaje creado por Guido Van Rossum en Holanda en 1991. Su nombre es un homenaje a los Monty Python.
Lenguaje interpretado multi-plataforma, orientado a objetos.
Resulta muy adecuado para gestión de textos.
Ampliamente utilizado en la web (Zope).
Consideraciones a tener en cuenta
Aunque el código interpretado es más lento que el código Compilado, hay que tener en cuenta que cuesta menos desarrollarlo y se Usa, normalmente, en programas cortos, en los que no existen diferencias Significativas por esta lentitud.
Python permite importar rutinas en lenguaje C, por ejemplo.
Siempre que se importa con éxito un módulo, el intérprete intenta generar un fichero binario con extensión pyc comprensible directamente por el intérprete (más rápido de cargar, y puede usarse para evitar distribuir código fuente).
Los programas en python suelen ser entre 2 y 4 veces más cortos que sus equivalentes en java.
Prompt
Caracteres ">>>"
Indica que el intérprete de python espera que introduzcamos una orden usando el teclado.
Expresiones
Espacios en blanco
- No se pueden poner en medio de un número.
- No se pueden poner al principio de una expresión.
Comentarios
Son textos que no van a ser traducidos por el intérprete.
Se marcan con el carácter # (todo lo que haya entre este carácter y el fin de línea es un comentario).
Operadores
Operación | Operador | Aridad | Asociatividad | Precedencia |
---|---|---|---|---|
Exponenciación | ** | Binario | Por la derecha | 1 |
Identidad | + | Unario | - | 2 |
Cambio de signo | - | Unario | - | 2 |
Multiplicación | * | Binario | Por la izqda. | 3 |
División | / | Binario | Por la izqda. | 3 |
Módulo (o resto) | % | Binario | Por la izqda. | 3 |
Suma | + | Binario | Por la izqda. | 4 |
Resta | - | Binario | Por la izqda. | 4 |
Igual que | == | Binario | - | 5 |
Distinto de | != | Binario | - | 5 |
Menor que | < | Binario | - | 5 |
Menor o igual que | <= | Binario | - | 5 |
Mayor que | > | Binario | - | 5 |
Mayor o igual que | >= | Binario | - | 5 |
Negación | not | Unario | - | 6 |
Conjunción | and | Binario | Por la izqda. | 7 |
Disyunción | or | Binario | Por la izqda. | 8 |
"y" binario | & | Binario | ||
"o" binario | | | Binario | ||
"o exclusiva" binario | ^ | Binario | ||
desplazamiento a izquierda de bits | << | Binario | ||
desplazamiento a derecha de bits | >> | Binario |
Tipos de Datos
- Enteros
- Ejemplo 1:
- >>> 3 / 2
- 1
- >>> 3.0 / 2
- 1.5
- Ejemplo 1:
- Floats
- Números en coma flotante: constan de dos partes (mantisa y exponente)
- Ejemplo: 2e3 (mantisa 2 y exponente 3) = 2 * (10 elevado a 3) = 1000
- Números en coma flotante: constan de dos partes (mantisa y exponente)
- Lógicos o Booleanos
- True / False
- Operadores no asociativos:
- Ejemplo: 2<3<4 es equivalente a (2<3) and (3<4)
- Caracteres
- Cualquier símbolo entre comillas simples (') o dobles (")
- Ejemplo:
- >>> p = 'A'
- >>> p = "A"
- Ejemplo:
- Funciones:
- ord( <carácter> )
- Devuelve la posición en la tabla ASCII del carácter pasado como argumento
- Ejemplo:
- >>> ord( p )
- 65
- chr( <número> )
- Devuelve el carácter cuya posición en la tabla ASCII es el número que recibe como argumento
- Ejemplo:
- >>> chr( 65 )
- 'A'
- >>> chr( ord( 'A' ) )
- 'A'
- ord( <carácter> )
- Cualquier símbolo entre comillas simples (') o dobles (")
- Cadenas (strings)
- Secuencia de caracteres delimitado por comillas simples (') o dobles (")
- Ejemplo 1:
- >>> nombre = "Pepe"
- >>> nombre + ' Gil'
- 'Pepe Gil'
- Ejemplo 2:
- >>> 'C' * 3
- 'CCC'
- Ejemplo 3:
- Ejemplo 1:
- '<<<<Pepe>>>><<<<Pepe>>'
- Secuencia de caracteres delimitado por comillas simples (') o dobles (")
Variables
variable = expresión
Identificador (nombre de variable): letras (del Alfabeto inglés), dígitos y/o el carácter de subrayado (_). El primer Carácter no debe ser un dígito, y el identificador no debe coincidir con Una palabra reservada.
Mayúsculas y minúsculas son diferentes.
Estilo: Los nombres de variables deberían guardar relación con los datos del problema.
Toda variable debe estar inicializada antes de usarla.
Python es un lenguaje que implementa tipos de datos dinámicos, esto es, durante un programa una variable puede cambiar de tipo (asignándole otro). Además es un lenguaje fuertemente tipado, esto es, sus tipos se mantienen de forma consistente.
Asignación con operador
Existe para todos los operadores aritméticos normales (+=, -=, *=, /=, %=, **=) y binarios (&=, |=, ^=, <<=, >>=).
Ejemplo: i = i +1 es equivalente a i += i + 1
El Valor None
Es un valor especial para representar cuando no hay un valor.
Cadenas
Secuencia de caracteres encerrada entre comillas simples o dobles.
Son inmutables.
Secuencia | Significado |
---|---|
\newline | No se incluye en la cadena (se usa para escribir cadenas que ocupen más de una línea) |
\\ | Escribe una \ |
\' | Comilla simple |
\" | Comillas dobles |
\a | Sonido de campanilla (bell) |
\b | Retroceso (backspace) |
\f | Nueva página |
\n | Línea nueva |
\r | Retorno de carro |
\t | Tabulador horizontal |
\v | Tabulador vertical |
\ooo | Carácter ASCII con código octal ooo |
\xhh | Carácter ASCII con código hexadecimal hh |
Raw strings
Si se precede la cadena por una r. En este tipo de strings, no se interpretan las secuencias de escape (las precedidas por un \).
Operaciones
- Concatenación: +
- Repetición de cadenas: *
- Necesita dos datos: uno de tipo cadena y otro de tipo entero.
- Resultado: concatenación De la cadena consigo misma tantas veces como indique el número entero.
- Longitud de una cadena: len
- Operador %:
- Operando izquierdo: cadena con indicaciones de formato simlares al printf.
Carácter | Significado |
---|---|
d, i | Entero en decimal |
o | Entero en octal |
x, X | Entero en hexadecimal |
e, E | Número en coma flotante con exponente |
f, F | Número en coma flotante sin exponente |
g, G | Número en coma flotante con o sin exponente, según la precisión y la talla del exponente |
s | Transforma el objeto en cadena usando str |
- Operando derecho: expresión o tupla.
- Resultado: cadena resultante de Sustituir las marcas de formato en el operando izquierdo por el valor o Valores del operando derecho.
- Módulo string:
- replace(subcadena_original, subcadena_destino)
Caracteres Especiales
Para poder incluir en una cadena, por ejemplo, las comillas dobles deben venir precedidas del carácter \
Subsecuencias
Las cadenas son simplemente un tipo especial de secuencias (junto con las listas, tuplas y diccionarios). Todas las secuencias pueden ser troceadas usando la notación de slices.
Si entre los corchetes sólo hay un número Positivo, se devuelve el elemento de la posición correspondiente (se Cuenta desde cero). Cuando hay dos números, se devuelve la subsecuencia Que comienza en el primero y llega hasta antes del último. Una manera de Ver cómo se elige el subintervalo es la siguiente. Imagina que las Posiciones corresponden a marcas entre los caracteres.
0 | 1 | 2 | 3 | 4 | 5 | 6 |
c | a | d | e | n | a | |
-6 | -5 | -4 | -3 | -2 | -1 |
Para saber qué se obtiene con c[i:j], bata con Mirar entre las marcas correspondientes a i y j. Si se omite i, se asume Que es cero; si se omite j, se asume que es la longitud de la cadena.
c[:i] + c[i:] es igual a c.
c[i:j:k]: subsecuencia que empieza en i e Incluye a todos los elementos que hay desde la posición i cada k Posiciones siempre que i+(k*n) < j
Un carácter es una cadena de longitud 1.
Listas
Conjunto ordenado de elementos, que pueden ser dispares, separados por comas.
No es lo mismo una lista de un elemento que el elemento solo.
Podemos asignar nuevos valores a partes de la lista, tanto a elementos individuales como a subsecuencias.
Los elementos de las listas pueden tener cualquier tipo; en particular, pueden ser listas.
Podemos hacer que una lista se contenga a sí misma.
Operaciones
- Como las cadenas, tienen las operaciones +, * y len().
- split(): Devuelve una lista a partir de Una cadena, donde ha separado la cadena en elementos usando como Separador el espacio en blanco.
- split(separador): Igual que el anterior pero especificando el separador.
entrada / salida
Uso: print seguido de una secuencia de expresiones (separadas por comas) cuyo resultado queremos que salga por pantalla.
Si se añade una coma al final, no se incluye un salto de línea como fin de la ejecución.
El operador % puede usarse para formatear la salida.
Estructuras de
Control
Bloque de instrucciones
Un bloque o secuencia de instrucciones estará Identificado por compartir una misma indentación o sangrado. En las Instrucciones complejas, el comienzo de un nuevo bloque de instrucciones Vendrá precedido por ':'
Sentencias condicionales
if
if condición:
acción
Acción
...
Acción
Cuando condición es cierta (true, o distinta de 0) se ejecutarán las acciones del bloque asociado.
else
if condición:
acciones
else:
otras acciones
Cuando condición es falsa (false, o 0) se ejecutarán las acciones del bloque asociado.
elif
if condición:
acciones
elif otra condición:
otras acciones
Es un else junto con otro if.
pass
Instrucción vacía. Útil para aquellos en que la sintaxis requiera una instrucción, pero no queramos que se emplee.
Sentencias de repetición
while
while condición:
acción
Acción
...
Acción
for-in
for variable in serie de valores:
acción
Acción
...
Acción
La serie de valores debe ser una lista o una tupla.
break
Rompe el bucle, se sale de él, desde cualquier punto del mismo.
Es posible incluir un else al final de un bucle while. Las instrucciones de dicho else se ejecutarán sólo si no se ha acabado el bucle por medio de un break.
Funciones
Predefinidas
range([inicio, ] fin [, paso]): genera una lista de enteros que por defecto empieza en 0 (si no se ha especificado inicio) y acaba en fin - 1. Si se especifica un valor paso, cada elemento de la lista se genera sumándole paso al anterior.
Combinando range con len se pueden recorrer secuencias:
for i in range(len(a)):
print a[-i-1:]
Importación de módulos
from nombre módulo import símbolo
import nombre módulo
Módulos estándar
Algunos de los módulos que acompañan a la distribución de python son:
- calendar: Funciones de calendario.
- commands: Permite usar comandos propios de sistemas unix.
- os: Permite usar comandos del sistema operativo independientes del sistema que sea.
- getopt: Permite pasar argumentos en la línea de comandos.
- math: Biblioteca matemática estándar.
- cmath: Biblioteca matemática para números complejos.
- ftplib: Permite la conexión e interacción con un servidor FTP remoto.
- pickle y cpickle: Permiten guardar cualquier estructura de datos en un fichero, incluso en formato texto.
- random: Biblioteca para generación de números aleatorios.
- strings: Funciones de tratamiento y manejo de cadenas.
- curses.
Definición
def nombre(lista de argumentos):
acción
Acción
...
Acción
return
return expresión
Hace que finalice la función, dando como valor asociada a la misma el resultado de evaluar la expresión.
Las variables son locales, a menos que se declaren explícitamente como globales (con global).
Definición de Módulos
Un módulo será cualquier fichero con código python.
Importación de módulos de usuario
Si no se encuentra en alguna de las carpetas de los Módulos estándar, hay que decirle a python que busque también en la Carpeta en la que se encuentra:
>>> from sys import *
>>> path.Append('/mi/nueva/ruta')
A partir de aquí, se trata igual que un módulo estándar.
Listas y Tuplas
La diferencia entre listas y tuplas es que en las últimas no se pueden modificar sus elementos, tan sólo consultarlos.
Listas
Estructuras de datos que almacenan secuencias de cualquier tipo de datos.
Son mutables (se pueden cambiar sus componentes).
Se crean por medio de una secuencia de valores separados por comas y delimitados por []
Los valores que componen la lista pueden ser de cualquier tipo, incluso otra lista.
Acceso a valores
Dada una variable de tipo lista (a la que se le Ha asignado una lista), se puede acceder a los elementos de esa lista de Diversas formas:
- <var_lista>[<índice>]: accede al elemento de la lista en la posición indicada por índice (teniendo en cuenta que el primer elemento es el 0).
- <var_lista>[: <fin_índice>]: devuelve la sublista formada por los elementos desde el inicial hasta fin_índice - 1, es decir, tantos elementos como indica fin_índice comenzando desde el principio de la lista.
- <var_lista>[<ini_índice> : <fin_índice> ]: devuelve la sublista formada por los elementos desde el ini_índice hasta fin_índice - 1.
- <var_lista>[<ini_índice> :]: devuelve la sublista formada por los elementos desde el ini_índice hasta el final de la lista original.
Tuplas
Son secuencias de datos similares a las listas, con la diferencia de que son no mutables (no se pueden cambiar sus componentes).
Creación y acceso similar a las listas, pero Creadas delimitándolas por () y separando sus elementos por comas. Si la Tupla tiene un sólo elemento, se pone éste seguido de una coma.
Diccionarios
También llamados vectores o memorias asociativas.
Pares clave-valor donde clave puede ser cualquier objeto no mutable. Las claves han de ser únicas dentro de un diccionario.
Funcionan como vectores normales en los que los Índices pueden ser cualquier tipo de objeto inmutable (números, cadenas y Tuplas cuyos componentes sean inmutables).
Creación similar a la de una lista o tupla pero delimitando sus elementos por {}.
Diccionario vacío: {}
En este caso un elemento es un par <clave>:<valor>
Al igual que en las listas y tuplas, el acceso a Los elementos es por medio de corchetes, sólo que en lugar de usar Índices se accede por medio de la clave.
<var_diccionario>.Has_key(): devuelve 1 si la clave que se le pasa como argumento está y cero en caso contrario.
<var_diccionario>.Keys(): devuelve una lista con las claves de los elementos del diccionario <var_diccionario>.
<var_diccionario>.Get(): Recibe dos argumentos: el primero es la clave que se va a buscar y el Segundo el valor que se devolverá en caso de no encontrarla (si no se Especifica, devuelve None). En caso de encontrarla, devuelve el valor correspondiente a dicha clave.
Ficheros
open
Uso: Crear un fichero
Argumentos: nombre del fichero y modo de apertura ("r" para leer, y "w" para escribir).
El valor que devuelve open es la dirección del Fichero que se asignará a una variable o descriptor de fichero que se Usará para las operaciones sobre el mismo.
from urllib import *
f = urlopen('http://www.Uji.Es')
for línea in f:
print línea[:-1]
f.Close()
close
Cierre del fichero previamente abierto.
<descriptor_de_fichero>.Close()
read
Lee todo el fichero y lo devuelve en forma de cadena.
Argumento opcional: nº máximo de bytes a leer.
Si alcanza el fin de fichero devuelve la cadena vacía.
<descriptor_de_fichero>.Read()
readline
Lee una línea del fichero y lo devuelve en forma de cadena (incluyendo, si lo hay, el carácter de fin de línea).
Si alcanza el fin de fichero devuelve la cadena vacía.
<descriptor_de_fichero>.Readline()
readlines
Devuelve una lista con todas las líneas del fichero (resultado de repetidas llamadas a readline()).
<descriptor_de_fichero>.Readlines()
write
Escribe una cadena (argumento) en el fichero. Devuelve None.
<descriptor_de_fichero>.Write(s)
FUENTE: http://users.Dsic.Upv.Es/~carrasco/python.Htm
Traducción: http://www.Python.Com.Co/