Dadas dos listas que contienen tuplas como elementos, la tarea es escribir un programa en Python para acomodar la tupla de la segunda lista entre las tuplas consecutivas de la primera lista, después de considerar los rangos presentes entre las dos tuplas consecutivas de la primera lista.
Entrada : test_list1 = [(4, 8), (19, 22), (28, 30), (31, 50)], test_list2 = [(10, 12), (23, 26), (15, 20) , (52, 58)]
Salida : [((4, 8), (10, 12), (19, 22)), ((19, 22), (23, 26), (28, 30)), ((4, 8), (15, 20), (19, 22))]
Explicación : (4, 8) seguido de (19, 22) puede acomodar (10, 12) como 10 > 8 y 12 < 19.
Entrada : test_list1 = [(4, 8), (19, 22), (28, 30), (31, 50)], test_list2 = [(10, 22), (23, 26), (15, 20) , (52, 58)]
Salida : [((19, 22), (23, 26), (28, 30)), ((4, 8), (15, 20), (19, 22))]
Explicación : (23, 26) se puede acomodar entre tuplas.
Método: Usar bucle
En esto, mantenemos dos punteros, uno para cada contenedor y el otro para cada elemento en la lista 1. Ahora, verifique si alguna tupla de la lista 2 puede satisfacer la condición requerida, de lo contrario, los siguientes elementos consecutivos se consideran para el siguiente conjunto de iteración.
Ejemplo:
Python3
# Python3 code to demonstrate working of # Merge tuple list by overlapping mid tuple # Using loop # initializing lists test_list1 = [(4, 8), (19, 22), (28, 30), (91, 98)] test_list2 = [(10, 22), (23, 26), (15, 20), (52, 58)] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) idx = 0 j = 0 res = list() # iterating till anyone of list exhausts. while j < len(test_list2): # checking for mid tuple and appending if test_list2[j][0] > test_list1[idx][0]\ and test_list2[j][1] < test_list1[idx + 1][1]: # appending the range element from 2nd list which # fits consecution along with original elements # from 1st list. res.append((test_list1[idx], test_list2[j], test_list1[idx + 1])) j += 1 idx = 0 else: # if not, the 1st list is iterated and next two # ranges are compared for a fit. idx += 1 # restart indices once limits are checked. if idx == len(test_list1) - 1: idx = 0 j += 1 # printing result print("Merged Tuples : " + str(res))
Producción:
La lista original 1 es: [(4, 8), (19, 22), (28, 30), (91, 98)]
La lista original 2 es: [(10, 22), (23, 26), (15, 20), (52, 58)]
Tuplas combinadas: [((19, 22), (23, 26), (28, 30)), ((4, 8), (15, 20), (19, 22)), ((28, 30) , (52, 58), (91, 98))]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA