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?
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 listaCHs
en orden ascendente. Aquí hay un ejemplo de código que lograría la salida deseada:Lo que hace este código es primero generar la lista de tuplas
CHs
usandoitertools.product()
, como en el código original. Luego, se utiliza una comprensión de lista para ordenar cada tupla dentro deCHs
utilizando la funciónsorted()
. Finalmente, la funciónset()
se utiliza para eliminar cualquier duplicado de la lista ordenada, y la lista resultante se almacena ensorted_CHs
.Este enfoque debería funcionar para cualquier lista de tuplas, no solo aquellas generadas por
itertools.product()
.