Introducci贸n

1

El Zen de Python

Conjuntos

2

Sets

3

Modificando conjuntos

4

Operaciones con conjuntos

5

Playgrounds: Elimina elementos duplicados usando conjuntos

Comprehensions

6

List Comprehension

7

Dictionary Comprehension

8

Dictionary Comprehension: condition

9

Playgrounds: Crea una lista usando List Comprehension

10

Lists vs. Tuples vs. Sets

Funciones

11

Funciones

12

Funciones: return

13

Par谩metros por defecto y m煤ltiples returns

14

El scope

15

Refactor game

16

Playgrounds: Tienda de Tecnolog铆a

17

Funciones an贸nimas: lambda

18

Higher order function: una funci贸n dentro de otra funci贸n

19

Map

20

Map con diccionarios

21

Reto: map con inmutabilidad

22

Playgrounds: Multiplica todos los elementos por dos

23

Filter

24

Playgrounds: Retorna solo palabras de 4 letras y m谩s

25

Reduce

M贸dulos

26

M贸dulos

27

Mis propios m贸dulos

28

M贸dulos como scripts: __name__ y __main__

29

Paquetes

30

Playgrounds: Calcular la suma de todas las compras

Manipulaci贸n de archivos y errores

31

Iterables

32

Errores en Python

33

Manejo de excepciones

34

Playgrounds: Captura la excepci贸n: ZeroDivisionError

35

Leer un archivo de texto

36

Escribir en un archivo

37

Leer un CSV

38

Playgrounds: Lee un CSV para calcular el total de gastos

Gr谩ficas en Python

39

Creando una gr谩fica

40

Reto: graficando la poblaci贸n de un pa铆s

41

Reto: graficando la poblaci贸n mundial

Pr贸ximos pasos

42

隆Conoce otros proyectos de este curso!

43

Reconoce tu proceso y certif铆cate

44

Toma el Curso de PIP y Entornos Virtuales con Python

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

1D
0H
50M
26S

Iterables

31/44
Recursos

Aportes 25

Preguntas 7

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

ITERABLES
Un iterable se define como el objeto que contiene un n煤mero contable con valores y este al tener un valor puede recorrer uno a uno los elementos que la contienen como una estructura de datos y operar con ellos, pero a la vez se rigen bajo la instrucci贸n que se le es dada, con lo cual son dependientes de la instrucci贸n a recibir.

Los metodos de su uso son dos __iter__() y __next__() .

Veamos un ejemplo:

Tenemos una serie de frutas las cuales debemos recorrer una a una para saber cuales son las que est谩n dentro de la lista.

fruit = ("manzana", 'pera', 'banano')
myit = iter(fruit)

print(next(myit))
print(next(myit))
print(next(myit))

Ahora vamos a imprimir el resultado una a una con print(next(myit)), con esto controlamos un iterador por print

print(next(myit))
_Produccin:_
manzana
print(next(myit))
print(next(myit))
_Produccin:_
manzana
pera
print(next(myit))
print(next(myit))
print(next(myit))
_Produccin:_
manzana
pera
banano

Tambi茅n podemos utilizar los iterables como una cadena de texto que recorre un texto o una serie de n煤meros.

fruit = ("manzana")
myit = iter(fruit)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
_Produccin:_
m
a
n
z
a
n
a

Otra forma de realizar un iterador es atraves de for() o un bucle, para ello realizaremos el siguiente ejemplo:

cars = ('chevrolet', 'volvo', 'audi', 'mazda') 
for x in cars:
  print(x)
_Produccion:_
chevrolet
volvo
audi
mazda

Con el iterador tambi茅n podemos crear una secuencia de n煤meros hasta cierto valor que le determinemos.

class MyNumbers:
   def __iter__(self):
     self.a = 1
     return self

   def __next__(self):
     x = self.a
     self.a += 1
     return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
_Producci贸n:_
1
2
3
4
5

Ahora si queremos que la iteraci贸n se detenga en un valor determinador podemos utilizar la declaraci贸n StopIteration

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 10:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)
_Producci贸n:_
1
2
3
4
5
6
7
8
9
10

iter() nos permite controlar la forma en que se ejecutar un iterador, esto nos ayuda a no ocupar tanta memoria

<aside>
鈿狅笍 Si vamos mas alla del rango dado se va a generar un error con el StopIteration

</aside>

for i in range(1, 10):
  print(i)

my_iter = iter(range(1, 4))
print(my_iter)
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))

Un ciclo for no es mas que azucar sintactica ya que internamente lo que hace es in ciclo while True hasta llegar a StopIteration

my_list = [1, 2 ,3 ,4, 5]
my_iter = iter(my_list)

while True:
  try:
    item = next(my_iter)
    print(item)
  except StopIteration:
    break-

Resultado:

1
2
3
4
5

Ciclo for:

my_list = [1, 2 ,3 ,4, 5]
for item in my_list:
  print(item)

Resultado:

1
2
3
4
5

Iterables

  • Crear un iterador es muy sencillo. Si por ejemplo lo queremos hacer sobre una lista de 4 n煤meros, instanciamos un objeto de tipo iter() que recibir谩 por par谩metro la lista.

  • Para recorrerlo utilizaremos next(). Esta funci贸n recibe por par谩metro nuestro iterador y cada vez que se ejecuta, incrementa el n煤mero de la posici贸n en la que la iteraci贸n se encuentra. Por ejemplo, si es la primera vez que se ejecuta, estar谩 en la posici贸n inicial, la segunda vez se habr谩 incrementado en 1 y as铆 sucesivamente hasta llegar al final de la iteraci贸n:

my_iter = iter(range(0, 21))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))

Iterables

#----- iteraciones ------

# iterador range
for i in range(1,11):
  print(i)
--> 1
		2
		3
		4
		5
		6
		7
		8
		9
		10

# iterador que aun no ha sido detectado como tal
my_iter = range(1, 11)
print(my_iter)
--> range(1, 11)

# iterador detectado como tal
my_iter2 = iter(range(1,11))
print(my_iter2)
--> <range_iterator object at 0x7fe27d22f900>

# controlar al iterador de forma manual con next
print(next(my_iter2))
print(next(my_iter2))
print(next(my_iter2))
--> 1
		2
		3

# iteracion manual que alcanza el limite del iterador
my_iter3 = iter(range(1,4))
print(next(my_iter3))
print(next(my_iter3))
print(next(my_iter3))
print(next(my_iter3))
--> 1
		2
		3
		Traceback (most recent call last):
		  File "20_iter.py", line 25, in <module>
		    print(next(my_iter3))
		StopIteration

Iterable vs Iterador
El iterable es el contenedor que podemos iterar, este puede ser una estructura de datos como lo son las tuplas, los diccionarios, sets, listas y hasta las cadenas de texto.
Mientra que el iterador es el objeto con el que se puede iterar, es decir recorrer todos los elementos. Por eso se define con ayuda de la funcion iter().

my_iter = iter(range(1, 11))
print(my_iter)
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
<range_iterator object at 0x7f67c3aa0e10>
1
2
3

entonces todo son iteradores!

Despu茅s de indagar en este tema de iterables en la documentaci贸n de Python, siguen los generadores, que ser铆a genial que lo explicasen en alg煤n otro curso, ya que son muy 煤tiles al momento de programar en Python. Ac谩 pueden checar m谩s a detalle Generadores!

Un iterable en Python es un objeto que se puede recorrer o iterar. En otras palabras, es un objeto que se puede pasar al m茅todo iter() para obtener un iterador1. Un iterador es un objeto que se utiliza para recorrer un iterable utilizando el m茅todo next()1. Los iteradores tienen un m茅todo next(), que devuelve el siguiente elemento del objeto1. Es importante tener en cuenta que todos los iteradores tambi茅n son iterables, pero no todos los iterables son iteradores1.

Por ejemplo, una lista es un iterable, pero no es un iterador. Sin embargo, se puede crear un iterador a partir de una lista utilizando la funci贸n iter()1. Para que esto sea posible, la clase de un objeto necesita tener un m茅todo iter(), que devuelve un iterador, o un m茅todo getitem() con 铆ndices secuenciales que comienzan en 01.

Aqu铆 tienes un ejemplo de c贸digo que muestra c贸mo determinar si un objeto es iterable en Python:

def es_iterable(obj):
try:
iter(obj)
return True
except TypeError:
return False

elementos = [34, [4, 5], (4, 5), {鈥渁鈥: 4}, 鈥渄fsdf鈥, 4.5]

for elemento in elementos:
print(elemento, 鈥渆s iterable:鈥, es_iterable(elemento))
Copiar
Salida:

34 es iterable: False
[4, 5] es iterable: True
(4, 5) es iterable: True
{鈥渁鈥: 4} es iterable: True
dfsdf es iterable: True
4.5 es iterable: False
Copiar
Espero que esta explicaci贸n te ayude a comprender qu茅 son los iterables y los iteradores en Python

muchas gracias por explicar el motivo de porque estamos viendo como iterar manualmente! de por si uno le puede ver usos, pero queda la pregunta de 鈥減orque haria esto manual?鈥 y con su explicacion ya uno le pone aun mas atenci贸n 馃槂

ITERADOR

Un iterador es un un objeto que contiene un numero contable de valores. Se refiere a un objeto que se puede iterar, lo que significa que puede recorrer todos los valores.
T茅cnicamente, en Python, un iterador es un objeto que implementa el protocolo iterador, que consta de los m茅todos __iter__() y __next__()

ITERABLE
Las listas, las tuplas, los diccionarios y los conjuntos son todos objetos iterables. Son contenedores iterables de los que puede obtener un iterador.

Todos estos objetos tienen un m茅todo iter() que se usa para obtener un iterador

Genial!! No conoc铆a esto

馃搶ITERALES


鈥淓n resumen, en Python, un objeto iterable es aquel que se puede recorrer en una secuencia. Para ser iterable, el objeto debe implementar el m茅todo especial iter(), el cual devuelve un iterador. Un iterador es un objeto que mantiene el estado actual de la iteraci贸n y proporciona el siguiente elemento cuando se le solicita a trav茅s del m茅todo especial next(). Cada llamada a next() devuelve el siguiente elemento en la secuencia hasta que se llega al final, momento en el que se genera una excepci贸n StopIteration. En pocas palabras, los iterables permiten recorrer una secuencia de elementos de manera ordenada.鈥

**EJEMPLO B脕SICO**馃憞馃徎馃憞馃徎

my_list = [1, 2, 3, 4, 5]  # Una lista como iterable

# Iterando sobre la lista utilizando un bucle for
for item in my_list:
    print(item)

# Creando un iterador manualmente
my_iterator = iter(my_list)
print(next(my_iterator))  # Imprime 1
print(next(my_iterator))  # Imprime 2
print(next(my_iterator))  # Imprime 3

Ejemplo utilizandolo para iterar en el contenido de una lista seteando el limite del rango con el metodo len()

monedas = ['btc', 'eth', 'sol', 'xrp']
length = len(monedas)
token_iteration = iter(range(length))

count = 0
while count <= length-1:
  print(monedas[next(token_iteration)])
  count += 1

OUTPUT:
btc
eth
sol
xrp

Revisando documentaci贸n algo interesante del StopItetion tambi茅n podemos usarlo para parar una condici贸n

  def __next__(self):
    if self.a <= 10:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
for i in range(1,10):
  print(i)

my_iter = iter(range(1,4))
print(my_iter)
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))

Hace iunas clases encontr茅 try/except

for i in range(1, 10):
  print(i)

my_iter = iter(range(1, 4))

try:
    print(my_iter)
    print(next(my_iter))
    print(next(my_iter))
    print(next(my_iter))
    print(next(my_iter))
except:
   print('la iteraci贸n alcanz贸 su l铆mite')

Las iteraciones en Python se refieren al proceso de repetir un conjunto de instrucciones un determinado n煤mero de veces o hasta que se cumpla una condici贸n espec铆fica. En Python, esto se logra utilizando estructuras de control de flujo como los bucles 鈥渇or鈥 y 鈥渨hile鈥.

Diferencia entre un iterable y lista

  • Una lista es un tipo de objeto que puede contener una colecci贸n ordenada de elementos.
  • Un iterable es un objeto que se puede recorrer y del cual se pueden obtener sus elementos uno a uno en un orden definido.

La diferencia principal entre una lista y un iterable es que una lista es un tipo espec铆fico de objeto que contiene elementos, mientras que un iterable es una interfaz gen茅rica que puede aplicarse a diferentes tipos de objetos.
En resumen, una lista es un tipo espec铆fico de iterable que se utiliza para almacenar una colecci贸n de elementos en un orden determinado.

interesante lo de los iterables

Hola

Les comparto el c贸digo de la clase.

# Iterables
# https://www.w3schools.com/python/python_iterators.asp

for i in range(1, 11):
  print(i)

my_iterable = iter(range(1, 4))
print(my_iterable)
# Iterando manualmente
# De esta manera optimizamos el rendimiento, porque el rango completo no se genera directamente, sino que lo genera progresivamente, lo que hace que el recurso en memoria no sea tan alto.
print(next(my_iterable))
print(next(my_iterable))
print(next(my_iterable))
# Cuando genero una iteracion que sobrepase el rango me genera la excepcion StopIteration
print(next(my_iterable))

Estoy teniendo problemas con Replit, alguien mas? No me esta dejando ejecutar ningun programa: 鈥/home/runner//venv/bin/python: line 3: exec: : not found replit鈥

for i in range(1,10):
    print(i)
    
my_iterador=range(1,11)
#Aun no se puede iterar el for lo hace 
print(my_iterador)

my_iterador1=iter(range(1,11))
#Le hacemos casting a lista y nos saldra en lista
print(my_iterador1)
#Este iter, lo podemos contralar de manera manual
#Como es un iterador, puedo iterar manualmente con
#la palabra next

#Manualmente lo itera, genera progresivamente
#Para ahorrar la memoria
print(next(my_iterador1))
print(next(my_iterador1))
print(next(my_iterador1))
print(next(my_iterador1))

fruit = ("manzana", 'pera', 'banano')
myit = iter(fruit)

print(next(myit))
print(next(myit))
print(next(myit))

fruit = ("manzana")
myit = iter(fruit)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))

my_iter = iter(range(1,4))

print(next(my_iter)) #1
print(next(my_iter)) #2
print(next(my_iter)) #3
print(next(my_iter)) # StopIteration
#En archivos, podemos leer de esta manera
#leyendo por lineas y no completamente un archivo

#Si vas a mas del rango, saldra una excepcion

my_iter = iter(range(1,4))

print(next(my_iter)) #1
print(next(my_iter)) #2
print(next(my_iter)) #3
print(next(my_iter)) # StopIteration
for i in range(1, 10):
  print(i)

my_iter = iter(range(1,4))
print(my_iter)
print(next(my_iter))
print(next(my_iter))
print(next(my_iter))