mooc de introducción a sage. cadenas de caracteres, listas ... · mooc de introducci on a sage....

31
MOOC de Introducci´on a sage. Cadenas de caracteres, listas y ciclos for MOOC de Introducci´ on a sage. Cadenas de caracteres, listas y ciclos for Leandro Mar´ ın

Upload: others

Post on 22-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

MOOC de Introduccion a sage.Cadenas de caracteres, listas y ciclos for

Leandro Marın

Page 2: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

1 Cadenas de Caracteres

2 Listas

3 Lazos for

Page 3: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Cadenas de Caracteres

Definicion

Podemo definir una cadena de caracteres poniendo el textoentre comillas de tres formas distintas:

a = ’Hola Mundo ’

b = "Hola Mundo"

c = """ Hola Mundo """

print a==b and b==c

Nos respondera True porque las tres son la misma cadena.

La forma con triples comillas permite introducir cadenas decaracteres formadas por varias lıneas.

Page 4: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Cadenas de Caracteres

Definicion

Podemo definir una cadena de caracteres poniendo el textoentre comillas de tres formas distintas:

a = ’Hola Mundo ’

b = "Hola Mundo"

c = """ Hola Mundo """

print a==b and b==c

Nos respondera True porque las tres son la misma cadena.

La forma con triples comillas permite introducir cadenas decaracteres formadas por varias lıneas.

Page 5: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Cadenas de Caracteres

Caracteres Especiales I

Cuando tenemos que poner comillas simples o dobles en unacadena de caracteres, podemos optar por usar el otro tipo decomillas para definir la cadena, ası por ejemplo:

cad1 = ’Le llamaban Juan "el caradura"’

cad2 = "This is my friend ’s book"

El sımbolo \ se utiliza como sımbolo de escape, si queremosintroducirlo en alguna cadena de caracteres como otro sımbolocualquiera, podemos poner r delante de la cadena como sigue:

txt = r"Tenemos $\alpha = 3\pi/2$"

Esto nos resultara muy util para el ultimo tema, cuandoqueramos integrar sage con LATEX.

Page 6: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Cadenas de Caracteres

Caracteres Especiales II

Si queremos introducir sımbolos UNICODE podemos poner ual inicio de la cadena, por ejemplo

nombre = u"Leandro Marın Mu~noz"

aunque para que no nos de errores en el caso de programasescritos en archivos independientes, debemos poner al iniciodel fichero que el texto esta codificado en UNICODE comosigue:

# -*- coding: utf-8 -*-

nombre = u"Leandro Marın Mu~noz"

print nombre

En general, los caracteres UNICODE suelen dar algunosproblemas y si se pueden evitar, es mejor evitarlos. Porejemplo para generar texto LATEXyo prefiero utilizar \’i que ı.

Page 7: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Cadenas de Caracteres

Operaciones con Cadenas de Caracteres

Dadas dos cadenas de caracteres, podemos unirlas con laoperacion + . Tambien podemos utilizar el producto de unacadena de caracteres por un numero n que realizara n copiasde la cadena original.

print "Hola "+"Mundo"

print "Hola "*3

Nos dara

Hola Mundo

Hola Hola Hola

Page 8: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Cadenas de Caracteres

Introduciendo Valores en Cadenas de Caracteres I

Para introducir valores en cadenas de caracteres podemosutilizar format como sigue:

a = 4

b = "cuerda"

txt = "La {0} mide {1} metros.".format(b,a)

print txt

Nos escribira

La cuerda mide 4 metros

Page 9: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Cadenas de Caracteres

Introduciendo Valores en Cadenas de Caracteres II

Las variables que aparecen como parametros de format sevan introduciendo en las posiciones marcadas como {0}, {1},etc. No es preciso que sea en el mismo orden y podemosutilizar los valores las veces que queramos.

t = r"\item <{0}-> ${2}+{2}={1}$.".format(1,4,2)

print t

Nos da

\item<1-> $2+2=4$.

Page 10: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Definicion

Una lista es una coleccion ordenada de objetos (que puedentener tipos diferentes). Se define escribiendo los objetos entrecorchetes y separados por comas.

L = [1,2,"Hola","Mundo"]

Podemos acceder a cada uno de los elementos de la lista consu ındice, que ira desde 0 hasta n − 1 siendo n la longitud dela lista.

print L[0]

print L[3]

Nos dara respectivamente 1 y Mundo.

Page 11: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Definicion

Una lista es una coleccion ordenada de objetos (que puedentener tipos diferentes). Se define escribiendo los objetos entrecorchetes y separados por comas.

L = [1,2,"Hola","Mundo"]

Podemos acceder a cada uno de los elementos de la lista consu ındice, que ira desde 0 hasta n − 1 siendo n la longitud dela lista.

print L[0]

print L[3]

Nos dara respectivamente 1 y Mundo.

Page 12: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Operaciones con Listas I

Dadas dos listas, podemos unirlas con el comando + y hacervarias copias de una lista multiplicandola por un numeroentero.

L = [1,3,4]+[2,4,6]

N = [1,2]*3

print L+N

Nos dara

[1, 3, 4, 2, 4, 6, 1, 2, 1, 2, 1, 2]

Page 13: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Operaciones con Listas II

Tambien podemos anadir elementos al final de la lista conappend, por ejemplo

L = []

L.append("Hola")

L.append("Mundo")

print L

Nos dara

[’Hola’, ’Mundo ’]

La lista [ ] es la lista vacıa.

Page 14: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Operaciones con Listas II

Tambien podemos anadir elementos al final de la lista conappend, por ejemplo

L = []

L.append("Hola")

L.append("Mundo")

print L

Nos dara

[’Hola’, ’Mundo ’]

La lista [ ] es la lista vacıa.

Page 15: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Particiones de Listas

Supongamos que tenemos una lista L con n elementos.

L [ i : j ] denota la lista formada por los elementos[ L [ i ] ,L[ i + 1 ] ,...,L[j - 1 ] ] .

Si no ponemos alguno de los dos valores i o j se entenderaque vamos hasta el extremo (inicial o final), es decir,L [ i : ] sera la lista [ L [ i ] ,L[ i + 1 ] ,...,L[n - 1 ] ] yL [ : j ] sera [ L [ 0 ] ,L[ 1 ] ,...,L[j - 1 ] ] .

L [ : ] sera una copia de toda la lista L.

Page 16: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Particiones de Listas

Supongamos que tenemos una lista L con n elementos.

L [ i : j ] denota la lista formada por los elementos[ L [ i ] ,L[ i + 1 ] ,...,L[j - 1 ] ] .

Si no ponemos alguno de los dos valores i o j se entenderaque vamos hasta el extremo (inicial o final), es decir,L [ i : ] sera la lista [ L [ i ] ,L[ i + 1 ] ,...,L[n - 1 ] ] yL [ : j ] sera [ L [ 0 ] ,L[ 1 ] ,...,L[j - 1 ] ] .

L [ : ] sera una copia de toda la lista L.

Page 17: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Particiones de Listas

Supongamos que tenemos una lista L con n elementos.

L [ i : j ] denota la lista formada por los elementos[ L [ i ] ,L[ i + 1 ] ,...,L[j - 1 ] ] .

Si no ponemos alguno de los dos valores i o j se entenderaque vamos hasta el extremo (inicial o final), es decir,L [ i : ] sera la lista [ L [ i ] ,L[ i + 1 ] ,...,L[n - 1 ] ] yL [ : j ] sera [ L [ 0 ] ,L[ 1 ] ,...,L[j - 1 ] ] .

L [ : ] sera una copia de toda la lista L.

Page 18: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Particiones de Listas

Supongamos que tenemos una lista L con n elementos.

L [ i : j ] denota la lista formada por los elementos[ L [ i ] ,L[ i + 1 ] ,...,L[j - 1 ] ] .

Si no ponemos alguno de los dos valores i o j se entenderaque vamos hasta el extremo (inicial o final), es decir,L [ i : ] sera la lista [ L [ i ] ,L[ i + 1 ] ,...,L[n - 1 ] ] yL [ : j ] sera [ L [ 0 ] ,L[ 1 ] ,...,L[j - 1 ] ] .

L [ : ] sera una copia de toda la lista L.

Page 19: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Algunas otras funciones sobre listas

len(L) es la longitud de la lista L.

shuffle(L) reordena los elementos de forma aleatoria.

L.sort() ordena la lista.

x in L es True o False dependiendo de si x esta en la listaL o no.

Page 20: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Algunas otras funciones sobre listas

len(L) es la longitud de la lista L.

shuffle(L) reordena los elementos de forma aleatoria.

L.sort() ordena la lista.

x in L es True o False dependiendo de si x esta en la listaL o no.

Page 21: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Algunas otras funciones sobre listas

len(L) es la longitud de la lista L.

shuffle(L) reordena los elementos de forma aleatoria.

L.sort() ordena la lista.

x in L es True o False dependiendo de si x esta en la listaL o no.

Page 22: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Algunas otras funciones sobre listas

len(L) es la longitud de la lista L.

shuffle(L) reordena los elementos de forma aleatoria.

L.sort() ordena la lista.

x in L es True o False dependiendo de si x esta en la listaL o no.

Page 23: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

La funcion range

La lista [ 0,1,2,...,n-1] se puede escribir comorange(n).

Si en lugar de empezar por 0 queremos empezar por otrovalor, podemos hacerlo poniendo range(i,j) que nos dara lalista [ i,i+1,...,j-1 ] .

Page 24: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

La funcion range

La lista [ 0,1,2,...,n-1] se puede escribir comorange(n).

Si en lugar de empezar por 0 queremos empezar por otrovalor, podemos hacerlo poniendo range(i,j) que nos dara lalista [ i,i+1,...,j-1 ] .

Page 25: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Listas

Uniendo Listas de Cadenas de Caracteres

Una lista de cadenas de caracteres se puede unir en una unicacadena utilizando join. Por ejemplo

L = ["Enero","Febrero","Marzo"]

print ",".join(L)

print " + ".join(L)

print "\n".join(L)

Nos da

Enero ,Febrero ,Marzo

Enero + Febrero + Marzo

Enero

Febrero

Marzo

Page 26: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Lazos for

Definicion

Un lazo for nos permite realizar una serie de operacionessobre cada uno de los elementos de una lista. Por ejemplo

for i in [0,1,2]:

print i^6

Nos dara

0

1

64

La lista que hemos puesto, [ 0,1,2] se puede reemplazar poruna variable que contenga una lista o por una funcion quedevuelva una lista como por ejemplo range(3).Tal y como sucedıa en los ciclos while hay que poner : alfinal de la lınea e indentar el codigo del bloque que se deberepetir para cada elemento de la lista.

Page 27: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Lazos for

Definicion

Un lazo for nos permite realizar una serie de operacionessobre cada uno de los elementos de una lista. Por ejemplo

for i in [0,1,2]:

print i^6

Nos dara

0

1

64

La lista que hemos puesto, [ 0,1,2] se puede reemplazar poruna variable que contenga una lista o por una funcion quedevuelva una lista como por ejemplo range(3).

Tal y como sucedıa en los ciclos while hay que poner : alfinal de la lınea e indentar el codigo del bloque que se deberepetir para cada elemento de la lista.

Page 28: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Lazos for

Definicion

Un lazo for nos permite realizar una serie de operacionessobre cada uno de los elementos de una lista. Por ejemplo

for i in [0,1,2]:

print i^6

Nos dara

0

1

64

La lista que hemos puesto, [ 0,1,2] se puede reemplazar poruna variable que contenga una lista o por una funcion quedevuelva una lista como por ejemplo range(3).Tal y como sucedıa en los ciclos while hay que poner : alfinal de la lınea e indentar el codigo del bloque que se deberepetir para cada elemento de la lista.

Page 29: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Lazos for

Transformaciones de Listas I

Sea L una lista de n elementos y supongamos que queremosgenerar la lista [ f(L[0 ] ),f(L[1 ] ),...,f(L[n- 1 ] ) ]

para alguna funcion f, lo podemos hacer como[ f(x) for x in L].

Por ejemplo

L = range(5)

M = [x^2+2 for x in L]

print M

Nos dara la lista

[2, 3, 6, 11, 18]

Page 30: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Lazos for

Transformaciones de Listas I

Sea L una lista de n elementos y supongamos que queremosgenerar la lista [ f(L[0 ] ),f(L[1 ] ),...,f(L[n- 1 ] ) ]

para alguna funcion f, lo podemos hacer como[ f(x) for x in L].

Por ejemplo

L = range(5)

M = [x^2+2 for x in L]

print M

Nos dara la lista

[2, 3, 6, 11, 18]

Page 31: MOOC de Introducción a sage. Cadenas de caracteres, listas ... · MOOC de Introducci on a sage. Cadenas de caracteres, listas y ciclos for Listas De nici on Una lista es una colecci

MOOC de Introduccion a sage. Cadenas de caracteres, listas y ciclos for

Lazos for

Transformaciones de Listas II

Estas transformaciones de listas las podemos combinar conotras operaciones como por ejemplo join para obtenerexpresiones complejas:

S="+".join(["{0}".format(x^2) for x in range(7)])

print S

nos da

0+1+4+9+16+25+36