Dada una lista, la tarea es escribir un programa en Python que pueda dividirla en todas las combinaciones posibles de pares de tuplas.
Entrada: test_list = [4, 7, 5, 1, 9]
Salida: [[4, 7, 5, 1, 9], [4, 7, 5, (1, 9)], [4, 7, (5, 1), 9], [4, 7, (5 , 9), 1], [4, (7, 5), 1, 9], [4, (7, 5), (1, 9)], [4, (7, 1), 5, 9] , [4, (7, 1), (5, 9)], [4, (7, 9), 5, 1], [4, (7, 9), (5, 1)], [(4 , 7), 5, 1, 9], [(4, 7), 5, (1, 9)], [(4, 7), (5, 1), 9], [(4, 7), (5, 9), 1], [(4, 5), 7, 1, 9], [(4, 5), 7, (1, 9)], [(4, 5), (7, 1 ), 9], [(4, 5), (7, 9), 1], [(4, 1), 7, 5, 9], [(4, 1), 7, (5, 9)] , [(4, 1), (7, 5), 9], [(4, 1), (7, 9), 5], [(4, 9), 7, 5, 1], [(4 , 9), 7, (5, 1)], [(4, 9), (7, 5), 1], [(4, 9), (7, 1), 5]]
Explicación: se forman todas las particiones de pares.
Entrada: test_list = [4, 7, 5, 1]
Salida: [[4, 7, 5, 1], [4, 7, (5, 1)], [4, (7, 5), 1], [4, (7, 1), 5], [ (4, 7), 5, 1], [(4, 7), (5, 1)], [(4, 5), 7, 1], [(4, 5), (7, 1)] , [(4, 1), 7, 5], [(4, 1), (7, 5)]]
Explicación: se forman todas las particiones de pares.
Enfoque: uso de rebanado y recursividad
En esto, realizamos toda la creación de pares desde el primer elemento, y utilizando la recursividad, los elementos múltiples se convierten en pares mediante la partición adecuada.
Python3
def pairings(test_list): if len(test_list) <= 1: return [test_list] # keeping 1st element and attaching every element with it parts = [[test_list[0]] + ele for ele in pairings(test_list[1:])] for idx in range(1, len(test_list)): # pairing all possible from second element parts.extend([[(test_list[0], test_list[idx])] + ele for ele in pairings(test_list[1: idx] + test_list[idx + 1:])]) return parts # initializing list test_list = [4, 7, 5, 1] # printing original list print("The original list is : " + str(test_list)) # calling util. function res = pairings(test_list) # printing result print("Created partitions : " + str(res))
Producción:
La lista original es: [4, 7, 5, 1]
Particiones creadas: [[4, 7, 5, 1], [4, 7, (5, 1)], [4, (7, 5), 1], [4, (7, 1), 5], [(4, 7), 5, 1], [(4, 7), (5, 1)], [(4, 5), 7, 1], [(4, 5), (7, 1) ], [(4, 1), 7, 5], [(4, 1), (7, 5)]]
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