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))
[(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))
[(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))
((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))
[(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))
[(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