# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     name: python3
# ---

# + [markdown] id="view-in-github" colab_type="text"
# <a href="https://colab.research.google.com/github/hnmelo/MujeresDigitales/blob/main/Clase5.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>

# + [markdown] id="tpz0r_uqYQYq"
# **Continuación de ciclos**
#
# ---
# *Ciclo **FOR** (bucle For)*

# + colab={"base_uri": "https://localhost:8080/"} id="orAtwm1PYxyY" outputId="c5835afc-201d-4e0f-e18e-7c519674faa0"
for i in range(1,3):
  print(i)

# + [markdown] id="JL522vgkZGaQ"
# Para dejar claras las partes que componen el bucle FOR, vamos a definir los siguientes términos:
#
# 1. **Iterable:** Objetos que pueden ser iterados. Por ejemplo: una lista, un valor tipo cadena, etc
#
# 2. **Iterador:** Son objetos que hacen referencia a un element (para hacer referencia a cada uno de los elementos, hay un método denominado *"Next"* que permite hacer referencia a los elementos del conjunto.
#
# **for (variable) in (iterable):
#    (bloque código)
#
# Algunos ejemplos de iterables en python son: las listas, cadenas, diccionarios, tuplas, etc.
#
# **¿Cómo saber que es iterable a la hora de programar?**
#
# Podemos darnos cuenta que es iterable usando la función isinstance().
#
# *Ejemplo:*

# + colab={"base_uri": "https://localhost:8080/"} id="9tlbcyjMxceq" outputId="1f18f590-e3aa-476f-ffd4-b5f79dd41864"
from collections import Iterable #paquete iterablr de collections (Python 3.7)
lista=[1,2,3,4,5,6,7,8,9,0]
a="computador"
b=14
print(isinstance(lista,Iterable))
print(isinstance(a,Iterable))
print(isinstance(b,Iterable))

# + colab={"base_uri": "https://localhost:8080/"} id="SQqnBuh-8zOi" outputId="a24abd81-9974-4a90-a5ae-1040a84bed28"
a="computador"
for i in a:
  print(i)

# + [markdown] id="OznbFOqG84mz"
# Para entender los iteradores, es importante conocer la función *"Iter()"*, esta función puede ser llamada sobre un objeto que sea iterable y nos devolverá un iterador.
#
# *Ejemplo:*

# + colab={"base_uri": "https://localhost:8080/"} id="r62lrl4n9SqJ" outputId="d7e122a6-d9f7-4cba-abcb-44adf6e4c26a"
lista=[1,2,3,4,5,6,7,8,9,0]
ref=iter(lista)
print(ref)
print(type(ref))

# + [markdown] id="MqTPGyFO9rAa"
# Al imprimir Ref, es un iterador de la clase *"list_iterator"*. Hace referencia a la lista original y nos permite accerder a sus elementos con la función "Next()"

# + colab={"base_uri": "https://localhost:8080/"} id="6FIAE1Bt9-W6" outputId="9bee34e1-c08f-4ac4-ba00-566dfb51a3d7"
lista=[1,2,3,4,5,6,7,8,9,0]
ref=iter(lista)
print(next(ref))
print(next(ref))
print(next(ref))
print(next(ref))
print(next(ref))
print(next(ref))
print(next(ref))
print(next(ref))
print(next(ref))
print(next(ref))

# + [markdown] id="bTRmKH1b-SgM"
# **Nota:** Cada vez que llamemos a Next() sobre Ref, nos devuelve el siguiente elemento de la lista original.
#
# Por ejemplo, quiero acceder al elemento 7, tendremos que llamar siete veces a next()
#
# ---
# **Tener en cuenta**
#
# Existen otros iteradores para las diferentes clases:
#
# 1. str_iterator (para cadenas)
# 2. list_iterator (para listas)
# 3. set_iterator (para conjuntos)
# 4. dict_keyiterator (para diccionarios)

# + [markdown] id="dqC2SXQw_A0D"
# **FOR ANIDADOS**
#
# ---
# Es posible anidar los for, es decir, ingresar uno dentro de otro. como lo vemos a continuación:

# + colab={"base_uri": "https://localhost:8080/"} id="DO_DydgS_Owm" outputId="1f1dbc01-df94-423b-8bdf-ad2e9785bed0"
#Ejemplo tipo matrix
#Vamos a crear una lista de listas, lo cual conforma una especie de matriz
#Recordemos que una matriz se compone de valores que se distribuyen en filas y columnas

qa=[[1,2,3],
    [4,5,6],
    [7,8,9]]

for i in qa:
  print(i)

for i in qa:
  for j in i:
    print(j)

# + [markdown] id="qNmOeDqVAEcD"
# **Nota:**
#
# Si queremos acceder a cada elemento individualmente, se procede a realizar un bucle de FOR anidado, es decir, un FOR se encargará de iterar las columnas y otro las filas

# + colab={"base_uri": "https://localhost:8080/"} id="7FPQ5D2qAmHU" outputId="7d4589a5-db4b-4b49-da54-4e6e134f669c"
#Otra forma de utilizar sólo el FOR, es la iteración al revés. Es decir, se puede iterar desde el último hasta el primer elemento
lista=[1,2,3,4,5,6,7,8,9,0]
for i in lista[::-1]:
  print(i)

# + colab={"base_uri": "https://localhost:8080/"} id="8m1cmDW2BGti" outputId="a3c34c8a-aed0-4645-df8c-f0faf2e7ac86"
lista=[1,2,3,4,5,6,7,8,9,0]
for i in lista[::2]:
  print(i)
print("-----------------------------")
a="florero"
for i in a[::-1]:
  print(i)

# + colab={"base_uri": "https://localhost:8080/"} id="0AmivODIMY3Q" outputId="ec3e8622-ba83-44cc-b78f-ad5db26694fd"
#usando rango
for i in range(10):
  print(i)
print("-----------------------")
#El range() genera una secuencia desde 0 por defecto hasta
#el número que se pasa como parámetro menos 2.

#Estructura: range(inicio,fin,salto)
#Observemos un truco con el range

print(list(range(2,10,2))) #Conversión de un rango en una lista

# + [markdown] id="o_C9vrrrNksZ"
# **Listas de comprensión:**
#
# ---
# Estas nos permiten crear listas de elementos en una sola línea de código.
#
# *Ejemplo:* Crear una lista de las potencias a la 3 de los números impares de 0 a 9

# + colab={"base_uri": "https://localhost:8080/"} id="5tMbjTkJOBoy" outputId="9d8d20e0-43b0-463f-971b-c87e8c9b546f"
tres=[i**3 for i in range(1,10,2)]
#1,3,5,7,9
print(tres)
print("----------------")

tres=[]
for i in range(1,10,2):
  tres.append(i**3)
  print(tres)

# + colab={"base_uri": "https://localhost:8080/"} id="nfmPtamkelLj" outputId="1c8055ac-28cc-4ce8-9a3d-be71987e507d"
s=[1 for i in range(10)]
print(s)

# + colab={"base_uri": "https://localhost:8080/"} id="op22W6nme3TL" outputId="36dc4076-77a7-4ca8-833a-22f94a78f8c5"
lwa=[5,10,15,20,25,30]
lwa2=[i/5 for i in lwa]
print(lwa2)

# + colab={"base_uri": "https://localhost:8080/"} id="zypP8SoufEec" outputId="1874466d-5d85-4ae6-cf38-a424e6e6b754"
pera="mama ama a ema"
pera2=[i for i in pera if i== 'm']
print(pera2)

print(len(pera2))

# + id="ciMlZ02AgLsK"


StarcoderdataJupyterScriptsDedupFiltered