Vous êtes sur la page 1sur 13

Tipos de datos

estructurados
Algoritmos y Programacin 2568364
Departamento de Ingeniera Elctrica
Facultad de Ingeniera
2017-1

Tipos de datos estructurados Informtica I (2016-2)


Data types until now

Tipo de dato Ejemplo Descripcin


int 5 nmeros enteros
float 67.8 nmeros reales
str hola cadenas de caracteres
bool True Verdadero o falso
None

no escalar escalar

Si quisiera almacenar las notas de un curso o las


medidas de temperatura que hace un sensor cada
hora, necesitara muchas variables, cada una con
nombre diferente.

Tipos de datos estructurados Algoritmos y Programacin 2


Tuples
Son secuencias de elementos como los strings,
pero con la diferencia de que cada elemento
puede ser de un tipo de dato diferente.

una tupla de un solo


elemento
t1
t1 == (5.24,)
(5.24,)
una tupla como
t2
t2 == (3.67,
(3.67, 'hola',
'hola', 4, 4, True)
True) elemento de otra tupla
t3
t3 == (t2,
(t2, 4,
4, False)
False)
t4
t4 == t3
t3 ++ t2
t2 concatenacin
indexacin print(t4)
print(t4)
print(t4[2])
print(t4[2]) (3.67,
(3.67, hola,
hola, 4,
4, True,
True, 4,
4, False,
False, 3.67,
3.67, hola,
hola, 4,
4, True)
True)

segmentacin print(t4[0])
print(t4[0])
print(t4[2:4])
print(t4[2:4])

Tipos de datos estructurados Algoritmos y Programacin 3


Example with tuples
def
def findDivisors(n1,
findDivisors(n1, n2):
n2):
'''Asume
'''Asume que
que n1
n1 yy n2
n2 son
son enteros
enteros positivos
positivos
Retorna
Retorna una
una tupla
tupla con
con todos
todos los
los
divisores
divisores comunes
comunes dede n1
n1 yy n2'''
n2'''
divisors
divisors == ()
() #tupla
#tupla vaca
vaca
for
for ii in
in range(1,
range(1, min(n1,n2)+1):
min(n1,n2)+1):
if
if n1%i
n1%i ==
== 00 and
and n2%i
n2%i ==
== 0:
0:
divisors
divisors == divisors
divisors ++ (i,)
(i,)
return
return divisors
divisors

divs
divs == findDivisors(20,
findDivisors(20, 100)
100)
print(divs)
print(divs)
total
total == 00
for
for dd in
in divs:
divs:
total
total +=+= dd
print('La
print('La suma
suma de
de los
los divisores
divisores es:
es: ',
', total)
total)

Tipos de datos estructurados Algoritmos y Programacin 4


Lists
Son secuencias de elementos que pueden ser
de diferente tipo, como las tuplas, pero con la
diferencia de que las listas son mutables:
pueden ser modificadas.

list1
list1 == [9]
[9]
list2
list2 == [4,
[4, 'free',
'free', 8.4]
8.4]
list3
list3 == [list2,
[list2, True]
True]
list4
list4 == list3
list3 ++ [4,
[4, -7.8]
-7.8]
print(list4)
print(list4) mutacin:
list2[1]
list2[1] == 6.34
6.34 modificacin
print(list4[2]) de la lista
print(list4[2])
print(list4[0])
print(list4[0])
print(list4[2:4])
print(list4[2:4])

Tipos de datos estructurados Algoritmos y Programacin 5


Lists and mutability

control
control == ['Aut.
['Aut. control',
control', 'Domotics']
'Domotics']
power
power == ['Power
['Power sys.',
sys.', 'Optimization']
'Optimization']
areas1
areas1 == [control,
[control, power]
power]
areas2
areas2 == [['Aut.
[['Aut. control','Domotics'],['Power
control','Domotics'],['Power sys.','Optimization']]
sys.','Optimization']]
print(areas1)
print(areas1)
print(areas2)
print(areas2)
print(areas1==areas2)
print(areas1==areas2)
power.append('Power
power.append('Power Electronics')
Electronics')
print(areas1)
print(areas1)
print(areas2)
print(areas2)
print(areas1==areas2)
print(areas1==areas2)

Tipos de datos estructurados Algoritmos y Programacin 6


List methods
list.append(e) agrega el objeto e al final de la lista
list.count(e) retorna el nmero de veces que e se
encuentra en la lista
list.insert(i, e) inserta el objeto e en la posicin i de la
lista
list.extend(list2) agrega todos los elementos de list2 al
final de la lista
list.remove(e) borra el primer elemento e que
encuentre
list.index(e) retorna la posicin del primer elemento
e que encuentre
list.pop(i) borra el elemento de la posicin i
list.sort() ordena la lista
list.reverse() invierte el orden de la lista

Tipos de datos estructurados Algoritmos y Programacin 7


Cloning
La clonacin se refiere a crear una copia de
un objeto de datos, a diferencia de enlazar
un nuevo nombre de variable:
aa == [2,
[2, 7,
7, 4,
4, 6]
6] aa == [2,
[2, 7,
7, 4,
4, 6]
6]
bb == aa vs. bb == a[:]
a[:]

def
defdef
defremoveDups(L1,
removeDups(L1,
removeDups(L1,
removeDups(L1, L2):L2):
L2):L2):
'''Asume
'''Asume
'''Asume que
'''Asume que
que L1
que L1
L1 yyyy L2
L1 L2
L2 son
L2 son
son listas
son listas
listas sin
listas sin
sin elementos
sin elementos
elementos
elementos
repetidos
repetidos internamente.
internamente. Elimina
Elimina todos
todos los
los
elementos
repetidos
elementos
repetidos de
de internamente.
L1
L1 queque tambin
tambinElimina
internamente. estn
estn en
Elimina todos
en L2'''
todos los
L2'''
los clonacin:
newL1
elementos
newL1 == L1[:]
L1[:]de
elementos de L1
L1 queque tambin
tambin estn
estn enen L2'''
L2''' crear una
for
forfor
ee in
for ee in
in newL1:
in L1:
newL1:
L1: copia de la lista
if
if if
ee in
if ee in
in L2:
L2:L2:
in L2:
L1.remove(e)
L1.remove(e)
L1.remove(e)
L1.remove(e)
L1
L1 L1
== [1,
L1 == [1,
[1, 2,
2, 2,
[1, 3,
3, 3,
2, 4]
4] 4]
3, 4]
L2
L2 L2
== [1,
L2 == [1,
[1, 2,
2, 2,
[1, 5,
5, 5,
2, 6]
6] 6]
5, 6]
removeDups(L1,
removeDups(L1,
removeDups(L1,
removeDups(L1, L2)
L2)L2)
L2)
print(L1)
print(L1)
print(L1)
print(L1)
Tipos de datos estructurados Algoritmos y Programacin 8
Strings vs Tuples vs Lists
seq[i] retorna el elemento i-simo de seq
len(seq) retorna la longitud de seq
seq1 + seq2 retorna la concatenacin de seq1 y seq2
n * seq repite seq n veces
seq[start:end] retorna un segmento de seq
e in seq retorna True si e est en seq
e not in seq retorna True si e no est en seq
for e in seq itera sobre los elementos de seq

Tipo Elementos Ejemplos Mutables


str caracteres , a, abc4 No
tuple cualquiera (), (3,), (ab,4) No
list cualquiera [], [3], [ab, 4] S

Tipos de datos estructurados Algoritmos y Programacin 9


Advantages of Strings
Las listas son el tipo de dato ms usado, sin
embargo, los strings tienen funciones muy
tiles:

s.count(s1) cuenta cuantas veces est la cadena s1 en s


s.find(s1) retorna el ndice de la primera vez que encuentre s1
s.rfind(s1) igual que find pero empieza desde el final
s.lower() retorna una cadena convertida a minsculas
s.replace(old,new) retorna una cadena en la que se reemplaza la
subcadena old por new
s.rstrip() retorna una cadena borrando espacios al final
s.split(d) retorna una lista de cadenas separadas por d

Tipos de datos estructurados Algoritmos y Programacin 10


Dictionaries
Son secuencias de elementos cuyos ndices
no son enteros sino valores inmutables (ej;
strings). A los ndices se les llama claves (keys).

monthsdays
monthsdays == {'enero':31,
{'enero':31, 'febrero':28,
'febrero':28, 'marzo':31,
'marzo':31, 'abril':30}
'abril':30}
print(monthsdays['febrero'])
print(monthsdays['febrero'])
print(monthsdays['abril'])
print(monthsdays['abril'])
print(monthsdays[''Marzo'.lower()])
print(monthsdays[''Marzo'.lower()])
mm == input('Ingrese
input('Ingrese un
un mes:
mes: ')
')
print('El
print('El mes',
mes', m.title())
m.title())
print(
print( 'tiene',
'tiene', monthsdays[m.lower()],
monthsdays[m.lower()], 'das')
'das')

el diccionario es indexado por un string

Tipos de datos estructurados Algoritmos y Programacin 11


Working with dictionaries
febrero 28
for
for ee in
in monthsdays:
monthsdays: abril 30
desordenados!
print(e,
print(e, monthsdays[e])
monthsdays[e]) marzo 31
enero 31

len(d) retorna la cantidad de elementos


d.keys() retorna una lista con las claves de d
d.values() retorna una lista con los valores de d
k in d retorna True si la clave k est en d
d[k] retorna el valor asociado a la clave k
d.get(k, e) retorna d[k] si k est en d, de lo contrario retorna e
d[k] = v asocia la clave con k con el valor v; si k no exista,
crea un nuevo elemento en el diccionario.
d.pop(k) elimina el elemento con clave k y retorna su valor
asociado
for k in d itera sobre las claves de d

Tipos de datos estructurados Algoritmos y Programacin 12


A language dictionary

EStoEN
EStoEN == {'pan':
{'pan': 'bread',
'bread', 'vino':'wine',
'vino':'wine', \\
'come':'eats',
'come':'eats', 'bebe':'drinks',\
'bebe':'drinks',\
'quiere':'wants',
'quiere':'wants', 'un':'a',\
'un':'a',\
'nadie':'nobody'}
'nadie':'nobody'}
EStoIT
EStoIT == {'pan':
{'pan': 'pane',
'pane', 'vino':'vino',
'vino':'vino', \\
'come':'mangia',
'come':'mangia', 'toma':'bebe',\
'toma':'bebe',\
'quiere':'vuole',
'quiere':'vuole', 'un':'un',\
'un':'un',\
'nadie':'nessuno'}
'nadie':'nessuno'}

def
def translateWord(word,
translateWord(word, dictionary):
dictionary):
if
if word
word in
in dictionary:
dictionary:
return
return dictionary[word]
dictionary[word]
else:
else:
return
return word
word

Tipos de datos estructurados Algoritmos y Programacin 13

Vous aimerez peut-être aussi