Está en la página 1de 19

Python

COMPARACIÓN DE SECUENCIAS
Los operadores de comparación están
sobrecargados para aceptar secuencias (string,
listas, tuplas)
>>> 'a' < 'b'
True
>>> 'ab' < 'aa'
False
>>> 'a' < 'b' < 'c'
True
>>> (1, 2, 3) < (1, 2, 4)
True
>>> [1, 2, 3] <= [1, 2, 3]
True
FORMA CORTA DE if else
Sintaxis:
expr-1 if test else expr-2
# Evalua expr-1 si test es True; sino, evalua expr-2
>>> n = 1
>>> print(‘uno' if n == 1 else 'no es uno')
uno
>>> x = -5
>>> abs_x = x if x > 0 else -x
>>> abs_x
5
CICLO WHILE
Sintaxis:
while condición:
sentencias

# El ciclo while tiene un bloque else opcional:


while condición:
sentencias
else: # se ejecuta solo si while no terminó por un break
sentenciasF
El bloque else es opcional. Se ejecuta si se sale del ciclo sin
encontrar una instrucción break.
break, interrumpe la ejecución de un ciclo (for o while)
continue, obliga a que se continúe con la siguiente iteración
del ciclo, sin evaluar lo que está después de continue
CICLO WHILE

def fac(n):
# calcula factorial de N = 1*2*3*…*n
f=1
c=1
while (c <= n):
f=f*c
c=c+1
return f
CICLO for
# secuencia: string, list, tuple, dictionary, set
for v in secuencia:
sentencias
# for-in con la opcion else
for v in secuencia:
sentencias
else:
sentenciasF
Se interpreta como “para cada ítem en la secuencia...”.
El bloque else se ejecuta si el ciclo termina
normalmente sin encontrar la instrucción break.
6
CICLO for
# String: itera en cada caracter
>>> for ch in 'hello':
print(ch, end=‘ ‘)
hello
# List: itera en cada elemento de la lista
>>> for v in [123, 4.5, 'hello']:
print(v)
123
4.5
hello
# Tuple: itera en cada elemento de la tupla
>>> for v in (123, 4.5, 'hello'):
print(v) 7
CICLO for
# Dict: itera en cada clave del diccionario
>>> dc = {'a': 1, 2: 'b', 'c': 'cc'}
>> for key in dct:
print(key, ':', dc[key])
a:1
2: b
c : cc
# Set: itera en cada elemento del conjunto
>>> for v in {'a', 2, 'apple'}:
print(v)
a
2
apple 8
CICLO for

Iteraciones sobre una secuencia de secuencias.


>>> lst = [(1,'a'), (2,'b'), (3,'c')]
# Itera en cada elemento de las tuplas
>>> for i1, i2 in lst:
print(i1, i2)
1a
2b
3c
>>> lst = [[1, 2, 3], ['a', 'b', 'c']]
>>> for i1, i2, i3 in lst:
print(i1, i2, i3)
123
abc
9
CICLO for
# Itera en clave y valor de un diccionario
>>>dc = [('genero', ‘M'), (‘edad', 21), ('nombre', ‘Luis')]
>>> for clave, valor in dc.items():
print(clave, ':', valor)
genero : M
edad : 21
nombre : Luis

10
FUNCIÓN range

La función range produce una secuencia de


enteros:
• range(n) produce enteros desde 0 a n-1;
• range(m, n) produce enteros desde m a n-1;
• range(m, n, s) produce enteros desde m a n-1 con
tamaño de paso de s (por defecto s=1).
>>> for num in range(1,5):
print(num, end=‘,’)
1, 2, 3, 4
>>> range(4) # no retorna la secuencia:
range(0, 4)
>>> list(range(4)) # retorna la secuencia:
[0, 1, 2, 3]
11
CICLO for
def fac2(n):
# calcula factorial de n: 1*2*3*…*n
f=1
for c in range(1, n+1):
# range genera la secuencia: 1,2,3, …,n
f *= c
return f

# llamado: fac2(5)
FUNCIÓN range

def ejemplo():
x = [3, 6, 1]
y = [5, 1, 4]
su = 0.0
for i in range(len(x)):
su += x[i]*y[i]
return su

>> ejemplo()
25

13
FUNCIÓN enumerate
La función enumerate() da los índices posicionales cuando
se recorre por una secuencia.
>>> for e in enumerate(['a', 'b']):
print(e)
(0, ‘a’)
(1, ‘b’)
>>> for i, v in enumerate(['a', 'b']):
print(i, v) # posición y elemento de una lista
0 a
1 b
>>> enumerate(['a', 'b', 'c'])
<enumerate object at 0x7ff0c6b75a50>
>>> for i, v in enumerate(('d', 'e')):
print(i, v) # Tupla
0 d
1 e 14
FUNCIÓN reversed
Se usa para iterar una secuencia en orden inverso.
>>> li = [10, 20, 30]
>>> for item in reversed(li):
print(item, end=' ')
30 20 10
>>> reversed(li)
<list_reverseiterator object at 0x7fc4707f3828>
>>> s = "hola"
>>> for c in reversed(s):
print(c, end='')
aloh

15
FUNCIÓN zip Y SECUENCIAS MÚLTIPLES

zip permite iterar sobre 2 o más secuencias de forma


concurrente y emparejada.
>>> l1 = ['a', 'b', 'c']
>>> l2 = [1, 2, 3]
>>> for i1, i2 in zip(l1, l2):
print(i1, i2, end=‘ ‘)
a1b2c3
>>> zip(l1, l2) # Retorna una lista de tuplas
[('a', 1), ('b', 2), ('c', 3)]
>>> tuple3 = (44, 55)
>>> zip(lst1, lst2, tuple3)
[('a', 11, 44), ('b', 22, 55)]

16
GENERAR SECUENCIAS
lr = [expresion_con_item for item in lista]
>>> sq = [v * v for v in range(1,11)]
>>> sq # lista de cuadrados
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# con un test opcional
lr = [expresion_con_item for item in lista if test]
>>> w = [3, 4, 1, 5]
>>> sq_odd = [v * v for v in w if v % 2 != 0]
>>> sq_odd # lista de cuadrados impares
[9, 1, 25]
# Con dos for
>>> [(x, y) for x in range(1,3) for y in range(1,4) if x != y]
# [(x, y) for x in [1,2] for y in [1,2,3] if x != y]
[(1, 2), (1, 3), (2, 1), (2, 3)]
17
GENERAR SECUENCIAS

PARA DICCIONARIOS:
>>> d = {x:x**2 for x in range(1, 5)} # se usa llaves
>>> d # la clave es x, el valor es x**2
{1: 1, 2: 4, 3: 9, 4: 16}
PARA CONJUNTOS
>>> s = {e for e in 'hola' if e not in 'aeiou'} # con llaves
>>> s
{'h', 'l'}

18
GRACIAS

También podría gustarte