👨‍💻
Coding Library
  • 👨‍💻Coding Library
  • 👾Linux
    • Basic Commands
    • Other commands
      • Ls
      • Mv
      • Chmod
      • Ln
      • Cat
      • Wc
      • Grep
      • Sed
      • Find
    • Sistema de ficheros
      • Inodos
  • 📦Git
    • Page 3
  • 🖊️Vim
    • Vim Basics
      • Gramatica de Vim
      • Moviendote por un archivo
    • Todo y mas
  • 🏛️C
    • Estructuras de datos
      • Listas Enlazadas
      • Colas
      • Pilas
      • Arboles
    • Valgrind
    • Operadores de bits
    • Procesos e Hilos
      • Fork
      • Wait
      • Waitpid
      • Semáforos
      • Estructura sigaction
      • Signals
    • MiniLibX
      • Ventanas (windows)
      • Imprimir Pixels
      • Imagenes
      • Colores
      • Eventos
      • Loops (bucles)
      • Leer imagenes
    • Readline
    • Funciones
      • opendir
      • access
    • Network Programming
      • Structs
      • Llamadas al sistema
      • Synchronous I/O Multiplexing
        • kqueue
  • 🌃C++
    • Clases
      • Herencia
      • Shallow and deeps copies
      • Clases abstractas y Interfaces
      • Reasignar operadores
    • Punteros y referencias
    • Manejo de ficheros
    • Punteros a funciones
    • Excepciones
    • Casting
    • Templates
    • Templated Containers
      • Iterators
      • std::vector
      • std::list
      • std::map
  • 🧠Pyhton
    • Sintaxis basica
    • Scripts
    • Tipos de datos
      • Listas
      • Set
      • Diccionarios
      • Generadores
    • Estructuras de control
      • Iterar con For
      • Iterar con zip
      • Iterar con enumerate
    • Map, Filter and Reduce
    • Funciones
    • Clases
      • Metodos
      • Herencia
    • Formateo con {} y format()
    • Decoradores
  • 📦JAVA
    • Conceptos basicos
    • Programacion estructurada
    • Clases predefinidas
    • POO
      • Clases
      • Herencia
      • Polimorfismo
      • Abstraccion
      • Encapsulacion
    • ArrayList
    • Excepciones
  • ⚒️HTML
    • HTML Basics
    • Elementos de bloque
      • Titulos y parrafos
      • Header, Main y Footer
      • Section, article y aside
    • Elementos en línea
    • Atributos
    • Enlaces <a>
    • Listas
    • Tablas
    • Formularios
      • Input
      • Select y datalist
      • GET y POST
    • Contenido embebido
      • Imagenes
      • Audio y video
      • Iframe
  • 🎨CSS
    • Introduccion
    • Selectores
    • Como funciona CSS
    • Box Model
    • Desbordamiento y Colapso de margenes
    • Display
    • Position
    • Medidas absolutas y relativas
  • 🟡JavaScript
    • Promesas
    • Async/Await
  • 📲Svelte
    • Componentes
    • Reactividad
    • Directivas
    • Eventos
  • 🖥️Sistemas
    • Particiones
  • 🕸️Redes
    • IP Adress
    • Subnet Mask
  • 🕷️Web Scrapping
    • Scrapy
      • Spiders
        • CrawlerSpider
      • Process data
      • Save data
        • CSV y JSON
        • SQLite
    • Splash
    • Selenium
Powered by GitBook
On this page
  • zip() con diccionarios
  • Deshacer el zip()
  1. Pyhton
  2. Estructuras de control

Iterar con zip

zip es una función en Python que se utiliza para combinar elementos de varias secuencias (por ejemplo, listas, tuplas, etc.) en una sola secuencia de tuplas. La cabecera de la función zip es la siguiente:

zip(*iterables)
  • iterables: Una secuencia o varias secuencias que se quieren combinar.

Ejemplo:

colors = ['red', 'green', 'blue']
codes = [0xff0000, 0x00ff00, 0x0000ff]
color_codes = list(zip(colors, codes))
print(color_codes)

# Salida:
# [('red', 0xff0000), ('green', 0x00ff00), ('blue', 0x0000ff)]

En este ejemplo, estamos combinando los elementos de las listas colors y codes en una sola lista de tuplas color_codes.

Es importante destacar que zip genera un objeto de tipo zip, no una lista. Para convertirlo en una lista, se puede utilizar la función list.

Iterar con zip en Python es muy similar a iterar con enumerate, con la diferencia de que zip combina varias secuencias en lugar de mantener un registro del índice.

Ejemplo:

colors = ['red', 'green', 'blue']
codes = [0xff0000, 0x00ff00, 0x0000ff]
for color, code in zip(colors, codes):
    print(color, code)

# Salida:
# red 0xff0000
# green 0x00ff00
# blue 0x0000ff

En este ejemplo, estamos iterando sobre las dos secuencias colors y codes utilizando zip. Cada iteración del bucle for asigna una tupla de elementos correspondientes a color y code.

Si las secuencias que estás combinando con zip tienen diferentes longitudes, zip solo combinará los elementos hasta el final de la secuencia más corta.

zip() con diccionarios

esp = {'1': 'Uno', '2': 'Dos', '3': 'Tres'}
eng = {'1': 'One', '2': 'Two', '3': 'Three'}

for a, b in zip(esp, eng):
    print(a, b)

# 1 1
# 2 2
# 3 3
esp = {'1': 'Uno', '2': 'Dos', '3': 'Tres'}
eng = {'1': 'One', '2': 'Two', '3': 'Three'}

for (k1, v1), (k2, v2) in zip(esp.items(), eng.items()):
    print(k1, v1, v2)

# 1 Uno One
# 2 Dos Two
# 3 Tres Three

Nótese que en este caso ambas key k1 y k2 son iguales.

Deshacer el zip()

Con un pequeño truco, es posible deshacer el zip en una sola línea de código. Supongamos que hemos usado zip para obtener c.

a = [1, 2, 3]
b = ["One", "Two", "Three"]
c = zip(a, b)

print(list(c))
# [(1, 'One'), (2, 'Two'), (3, 'Three')]

¿Es posible obtener a y b desde c? Sí, tan sencillo como:

c = [(1, 'One'), (2, 'Two'), (3, 'Three')]
a, b = zip(*c)

print(a)  # (1, 2, 3)
print(b)  # ('One', 'Two', 'Three')

Nótese el uso de *c, lo que es conocido como unpacking en Python.

PreviousIterar con ForNextIterar con enumerate

Last updated 2 years ago

Hasta ahora nos hemos limitado a usar zip con listas, pero la función está definida para cualquier clase . Por lo tanto podemos usarla también con .

Si realizamos lo siguiente, a,b toman los valores de las key del . Tal vez algo no demasiado interesante.

Sin embargo, si hacemos uso de la función , podemos acceder al key y value de cada elemento.

🧠
iterable
diccionarios
diccionario
items