Python: divide la lista en todos los pares de tuplas posibles

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

Deja una respuesta

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