0% encontró este documento útil (0 votos)
42 vistas16 páginas

Tuplas: Capítulo 10

Este documento explica las tuplas en Python, incluyendo su sintaxis, inmutabilidad, comparabilidad y ordenamiento. También cubre el uso de tuplas en asignaciones, ordenamiento de diccionarios y comprensión de listas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas16 páginas

Tuplas: Capítulo 10

Este documento explica las tuplas en Python, incluyendo su sintaxis, inmutabilidad, comparabilidad y ordenamiento. También cubre el uso de tuplas en asignaciones, ordenamiento de diccionarios y comprensión de listas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

PYTHON FOR

Tuples EVERYBODY

Tuplas
Capítulo 10

Python para Todos


es.py4e.com
PYTHON FOR
Tuples EVERYBODY

Las Tuplas Son Como Listas


Las tuplas son otro tipo de secuencia que funciona de forma parecida
a una lista – tienen elementos indexados empezando desde 0
>>> x = ('Glenn', 'Sally', 'Joseph') >>> for iter in y:
>>> print(x[2]) ... print(iter)
Joseph ...
>>> y = ( 1, 9, 2 ) 1
>>> print(y) 9
(1, 9, 2) 2
>>> print(max(y)) >>>
9
PYTHON FOR
Tuples EVERYBODY

pero... Las Tuplas son “inmutables”


A diferencia de una lista, una vez que creas una tupla,
no puedes alterar su contenido – de forma similar a una cadena

>>> x = [9, 8, 7] >>> y = 'ABC' >>> z = (5, 4, 3)


>>> x[2] = 6 >>> y[2] = 'D' >>> z[2] = 0
>>> print(x) Traceback:'str' Traceback:'tuple'
>>>[9, 8, 6] object does object does
>>> not support item not support item
Assignment Assignment
>>> >>>
PYTHON FOR
Tuples

Cosas que no se deben Hacer


EVERYBODY

con Tuplas
>>> x = (3, 2, 1)
>>> x.sort()
Traceback:
AttributeError: 'tuple' object has no attribute 'sort'
>>> x.append(5)
Traceback:
AttributeError: 'tuple' object has no attribute 'append'
>>> x.reverse()
Traceback:
AttributeError: 'tuple' object has no attribute 'reverse'
>>>
PYTHON FOR
Tuples EVERYBODY

Un Cuento sobre Dos Secuencias


>>> l = list()
>>> dir(l)
['append', 'count', 'extend', 'index', 'insert', 'pop',
'remove', 'reverse', 'sort']

>>> t = tuple()
>>> dir(t)
['count', 'index']
PYTHON FOR
Tuples EVERYBODY

Las Tuplas Son Más Eficientes


• Puesto que Python no tiene que construir la estructura de una
tupla de modo que sea modificable, las tuplas son más
simples y eficientes, en términos de uso de memoria y
desempeño, que una lista

• Así que en nuestros programas, cuando creamos “variables


temporales”, preferimos tuplas en vez de listas
PYTHON FOR
Tuples EVERYBODY

Tuplas y Asignaciones
• También podemos poner una tupla en el lado izquierdo de una sentencia de
asignación
• Incluso podemos omitir los paréntesis
>>> (x, y) = (4, 'fred')
>>> print(y)
fred
>>> (a, b) = (99, 98)
>>> print(a)
99
PYTHON FOR
Tuples EVERYBODY

Tuplas y Diccionarios
El método items() en >>> d = dict()
un diccionario >>> d['csev'] = 2
>>> d['cwen'] = 4
retorna una lista de
>>> for (c,v) in d.items():
tuplas (clave, valor) ... print(c, v)
...
csev 2
cwen 4
>>> tups = d.items()
>>> print(tups)
dict_items([('csev', 2), ('cwen', 4)])
PYTHON FOR
Tuples EVERYBODY

Las Tuplas son Comparables


Los operadores de comparación funcionan con tuplas y otras
secuencias. Si el primer elemento es igual, Python revisa el
siguiente elemento y así sucesivamente, hasta que encuentra
elementos diferentes.
>>> (0, 1, 2) < (5, 1, 2)
True
>>> (0, 1, 2000000) < (0, 3, 4)
True
>>> ( 'Jones', 'Sally' ) < ('Jones', 'Sam')
True
>>> ( 'Jones', 'Sally') > ('Adams', 'Sam')
True
PYTHON FOR
Tuples EVERYBODY

Ordenando Listas de Tuplas


• Podemos aprovechar la habilidad de ordenar una lista de tuplas
para obtener una versión ordenada de un diccionario
• Primero, ordenamos el diccionario basado en las claves utilizando el
método items() y la función sorted()
>>> d = {'a':10, 'b':1, 'c':22}
>>> d.items()
dict_items([('a', 10), ('c', 22), ('b', 1)])
>>> sorted(d.items())
[('a', 10), ('b', 1), ('c', 22)]
PYTHON FOR
Tuples EVERYBODY

Usando sorted()
Incluso podemos hacer esto >>> d = {'a':10, 'b':1, 'c':22}
de forma más directa usando >>> t = sorted(d.items())
directamente la función >>> t
nativa sorted, la cual toma [('a', 10), ('b', 1), ('c', 22)]
una secuencia como >>> for c, v in sorted(d.items()):
... print(c, v)
parámetro y retorna una
...
secuencia ordenada
a 10
b 1
c 22
PYTHON FOR
Tuples

Ordenamiento por Valores en


EVERYBODY

Lugar de Claves
• Si pudiéramos construir >>> c = {'a':10, 'b':1, 'c':22}
una lista de tuplas en la >>> tmp = list()
>>> for cl, v in c.items() :
forma (valor, clave), ... tmp.append( (v, cl) )
podríamos ordenar (sort) ...
por valor >>> print(tmp)
[(10, 'a'), (22, 'c'), (1, 'b')]
• Hacemos esto con un >>> tmp = sorted(tmp, reverse=True)
bucle for que crea una lista >>> print(tmp)
de tuplas [(22, 'c'), (10, 'a'), (1, 'b')]
PYTHON FOR
Tuples EVERYBODY

man_a = open('romeo.txt’) El top 10 de las


contadores = dict()
for linea in man_a: palabras más
palabras = linea.split() comunes
for palabra in palabras:
contadores[palabra] = contadores.get(palabra, 0 ) + 1

lst = list()
for clave, val in contadores.items():
nuevatup = (val, clave)
lst.append(nuevatup)

lst = sorted(lst, reverse=True)

for val, clave in lst[:10] :


print(clave, val)
PYTHON FOR
Tuples EVERYBODY

Una Versión Todavía Más Corta


>>> c = {'a':10, 'b':1, 'c':22}

>>> print( sorted( [ (v,c) for k,v in c.items() ] ) )

[(1, 'b'), (10, 'a'), (22, 'c')]

La comprensión de listas crea una lista dinámica. En este


caso, creamos una lista de tuplas invertidas y después las
ordenamos.
http://wiki.python.org/moin/HowTo/Sorting
PYTHON FOR
Tuples EVERYBODY

Resumen
• Tuplas en sentencias de
• Sintaxis de Tuplas
asignación
• Inmutabilidad
• Ordenamiento de
• Comparabilidad diccionarios por clave o
valor
• Ordenamiento
PYTHON FOR
Tuples EVERYBODY

Agradecimientos / Contribuciones
Las diapositivas están bajo el Copyright 2010- Charles R. Severance
(www.dr-chuck.com) de la Escuela de Informática de la Universidad de
Michigan y open.umich.edu, y están disponibles públicamente bajo una
Licencia Creative Commons Attribution 4.0. Favor de mantener esta
última diapositiva en todas las copias del documento para cumplir con
los requerimientos de atribución de la licencia. Si haces un cambio,
siéntete libre de agregar tu nombre y organización a la lista de
contribuidores en esta página conforme sean republicados los
materiales.

Desarrollo inicial: Charles Severance, Escuela de Informática de la


Universidad de Michigan.

Traducción al Español por Juan Carlos Pérez Castellanos - 2020-04-26

También podría gustarte