Crear una lista de tuplas a partir de múltiples listas y tuplas en Python

Vaibhav Vaibhav 10 octubre 2023
  1. Crear manualmente una lista de tuplas a partir de múltiples listas y tuplas en Python
  2. Crear una lista de tuplas a partir de varias listas y tuplas con el método zip() en Python
Crear una lista de tuplas a partir de múltiples listas y tuplas en Python

Cuando trabajamos con varias listas y tuplas, a menudo tenemos que combinar los valores presentes dentro de los objetos. Este enfoque hace que la iteración sobre ellos sea mucho más simple. Al desarrollar aplicaciones web o API con Python, este enfoque se sigue principalmente para garantizar que no falte ningún valor. Además, se vuelve muy iterar sobre estos valores dentro de las plantillas HTML.

En este artículo, aprenderemos cómo crear una lista de tuplas y tuplas a partir de varias listas en Python.

Crear manualmente una lista de tuplas a partir de múltiples listas y tuplas en Python

El enfoque más básico para crear una lista de tuplas a partir de varias listas y tuplas es escribir una función auxiliar o de utilidad usted mismo. La función aceptaría varias listas y tuplas y devolvería una lista de tuplas. Al iterar sobre las listas, la lógica debería garantizar que solo considere la longitud más pequeña en todas las listas y agregue elementos solo hasta ese índice. El siguiente código de Python implementa el enfoque discutido.

def convert(*args):
    """
    Returns a list of tuples generated from multiple lists and tuples
    """
    for x in args:
        if not isinstance(x, list) and not isinstance(x, tuple):
            return []

    size = float("inf")

    for x in args:
        size = min(size, len(x))

    result = []

    for i in range(size):
        result.append(tuple([x[i] for x in args]))

    return result


a = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8]
b = ["H", "E", "L", "L", "O"]
c = [True, False, False, True, True, True]
d = [100, 200, 300, 400]
result = convert(a, b, c, d)
print(result)

Producción :

[(1.1, 'H', True, 100), (2.2, 'E', False, 200), (3.3, 'L', False, 300), (4.4, 'L', True, 400)]

La función convert() acepta múltiples listas y tuplas como argumentos. Primero, comprueba si cada argumento pasado es una instancia de lista o tupla. Si no, devuelve una lista vacía. A continuación, encuentra la longitud más pequeña, digamos n, en todas las listas y tuplas. Esta operación asegura que no nos topemos con la excepción IndexError.

Una vez que se encuentra el tamaño más pequeño, la función convert() crea una lista vacía e itera sobre todos los argumentos n veces. Cada iteración crea una tupla y la agrega a la lista vacía creada antes. Una vez que se completa la iteración, la lista de tuplas se devuelve como respuesta.

Considerando el número de argumentos como n y la longitud más pequeña como m, la complejidad temporal de la función anterior es O(m * n), y la complejidad espacial también es O(m * n). La complejidad del tiempo es O(m * n) debido al bucle doble anidado for que crea el resultado.

Crear una lista de tuplas a partir de varias listas y tuplas con el método zip() en Python

La función zip() es la función de utilidad integrada de Python. Acepta múltiples objetos iterables como listas y tuplas y devuelve un objeto iterable. Este objeto zip almacena elementos como una lista de tuplas. Implementar la función zip() sería similar, no exacto, a la función convert() que implementamos en la última sección.

El valor devuelto por la función zip() es un objeto zip iterable. Si lo imprimiéramos, la salida sería similar a la siguiente.

<zip object at 0x7fee6d0628c0>

Ahora que hemos terminado con la teoría, comprendamos cómo usar el método zip() para nuestro caso de uso. Consulte el siguiente código para lo mismo.

a = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8]
b = ("H", "E", "L", "L", "O")
c = [True, False, False, True, True, True]
d = [100, 200, 300, 400]
result = zip(a, b, c, d)

for x in result:
    print(x)

Producción :

(1.1, 'H', True, 100)
(2.2, 'E', False, 200)
(3.3, 'L', False, 300)
(4.4, 'L', True, 400)
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python List

Artículo relacionado - Python Tuple