Python | Combinar dos listas en una lista de tuplas

Dadas dos listas, escriba un programa Python para fusionar las dos listas en una lista de tuplas.

Ejemplos:

Input : list1 = [1, 2, 3]
        list2 = ['a', 'b', 'c']
Output : [(1, 'a'), (2, 'b'), (3, 'c')]

Input : list1 = [1, 2, 3, 4]
        list2 = [ 1, 4, 9]
Output : [(1, 1), (2, 4), (3, 9), (4, '')]

Enfoque n. ° 1: Ingenuo
Combine la lista en una lista de tupla usando un bucle for. Pero el inconveniente es que dos listas deben tener la misma longitud.

def merge(list1, list2):
      
    merged_list = [(list1[i], list2[i]) for i in range(0, len(list1))]
    return merged_list
      
# Driver code
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(merge(list1, list2))
Producción:

[(1, 'a'), (2, 'b'), (3, 'c')]

 
Enfoque #2: Ingenuo pero más eficiente
Este método elimina el inconveniente anterior y funciona bien con longitudes desiguales de las dos listas. También proporciona un error de captura de prueba para el error de índice.

def merge(list1, list2):
      
    merged_list = []
    for i in range(max((len(list1), len(list2)))):
  
        while True:
            try:
                tup = (list1[i], list2[i])
            except IndexError:
                if len(list1) > len(list2):
                    list2.append('')
                    tup = (list1[i], list2[i])
                elif len(list1) < len(list2):
                    list1.append('')
                    tup = (list1[i], list2[i])
                continue
  
            merged_list.append(tup)
            break
    return merged_list
  
# Driver code
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(merge(list1, list2))
Producción:

[(1, 'a'), (2, 'b'), (3, 'c')]

 
Enfoque n. ° 3: usar zip()
el método zip() para fusionar los dos elementos de la lista y luego encasillarlos en tupla.

def merge(list1, list2):
      
    merged_list = tuple(zip(list1, list2)) 
    return merged_list
      
# Driver code
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(merge(list1, list2))
Producción:

((1, 'a'), (2, 'b'), (3, 'c'))

 
Enfoque n. ° 4: usar enumerate(), alternativa a zip().

Este método utiliza dos bucles for para enumerar a través de listas y fusionar las dos listas.

def merge(list1, list2):
      
    merged_list = [(p1, p2) for idx1, p1 in enumerate(list1) 
    for idx2, p2 in enumerate(list2) if idx1 == idx2]
    return merged_list
      
# Driver code
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
print(merge(list1, list2))
Producción:

[(1, 'a'), (2, 'b'), (3, 'c')]

 
Enfoque #5: Uso de map()y lambda.

# Using map() and lambda
def listOfTuples(l1, l2):
    return list(map(lambda x, y:(x,y), l1, l2))
  
# Driver Code
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
  
print(listOfTuples(list1, list2))
Producción:

[(1, 'a'), (2, 'b'), (3, 'c')]

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *