es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Organizar el producto de itertools en orden numérico.

Tuve un producto hecho por itertools de la siguiente manera:

CHs = list(itertools.product(at_idx_map['H'], at_idx_map['C']))

obteniendo la siguiente salida para CHs:

[(0, 1), (0, 6), (0, 11), (5, 1), (5, 6), (5, 11), (10, 1), (10, 6), (10, 11)]

sin embargo, necesitaría pares ordenados de forma numérica, mi salida deseada sería:

[(0, 1), (0, 6), (0, 11), (1, 5), (5, 6), (5, 11), (1, 10), (6, 10), (10, 11)]

¿Alguien tiene alguna sugerencia para esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, una solución a esto sería usar una comprensión de lista junto con la función sorted() para ordenar cada tupla dentro de la lista CHs en orden ascendente. Aquí hay un ejemplo de código que lograría la salida deseada:

    CHs = list(itertools.product(at_idx_map['H'], at_idx_map['C']))
    sorted_CHs = [tuple(sorted(pair)) for pair in CHs]
    sorted_CHs = sorted(set(sorted_CHs)) # elimina cualquier duplicado
    

    Lo que hace este código es primero generar la lista de tuplas CHs usando itertools.product(), como en el código original. Luego, se utiliza una comprensión de lista para ordenar cada tupla dentro de CHs utilizando la función sorted(). Finalmente, la función set() se utiliza para eliminar cualquier duplicado de la lista ordenada, y la lista resultante se almacena en sorted_CHs.

    Este enfoque debería funcionar para cualquier lista de tuplas, no solo aquellas generadas por itertools.product().

Comments are closed.