He generado una lista de tuplas usando la función de combinación en el paquete itertools. ¿Cómo puedo pasar eso a una lista de enteros para cortarlo? Aquí está mi código de muestra, pero me da un error debido a la tupla:
from itertools import combinations
myNumbers = [12,4,5,6,7,9,3,2]
listOfIndexes = list(range(8))
comb = combinations(listOfIndexes, 3)
for i in list(comb):
print(myNumbers[int(i)])
Mi salida esperada es imprimir todas las combinaciones de 3 números en myNumbers, como:
12,4,5
4,5,6
5,6,7
...
3 respuestas
Esto funciona:
from itertools import combinations
myNumbers = [12,4,5,6,7,9,3,2]
listOfIndexes = list(range(8))
comb = combinations(listOfIndexes, 3)
for i in list(comb):
a,b,c = myNumbers[i[0]], myNumbers[i[1]], myNumbers[i[2]]
print(a,b,c)
... pero por lo que puedo decir, el código anterior solo hace esto de una manera menos eficiente:
print([i for i in combinations(myNumbers, 3)])
Según el resultado de la muestra, parece que su objetivo es imprimir los tres elementos consecutivos de la lista. Esto es algo diferente, y no necesitamos combinaciones para eso.
Podemos cortar la lista con:
myNumbers = [12,4,5,6,7,9,3,2]
for i in range(len(myNumbers)-2):
print(myNumbers[i:i+3])
O podemos imprimir los elementos con una coma como separador con:
myNumbers = [12,4,5,6,7,9,3,2]
for i in range(len(myNumbers)-2):
print(*myNumbers[i:i+3], sep=',')
Esto luego imprime:
>>> for i in range(len(myNumbers)-2):
... print(*myNumbers[i:i+3], sep=',')
...
12,4,5
4,5,6
5,6,7
6,7,9
7,9,3
9,3,2
from itertools import combinations
myNumbers = [12,4,5,6,7,9,3,2]
listOfIndexes = list(range(8))
comb = combinations(listOfIndexes, 3)
for i in list(comb):
print(*[myNumbers[ij] for ij in i],sep=',')
Preguntas relacionadas
Nuevas preguntas
python
Python es un lenguaje de programación multipropósito, de tipificación dinámica y de múltiples paradigmas. Está diseñado para ser rápido de aprender, comprender y usar, y hacer cumplir una sintaxis limpia y uniforme. Tenga en cuenta que Python 2 está oficialmente fuera de soporte a partir del 01-01-2020. Aún así, para preguntas de Python específicas de la versión, agregue la etiqueta [python-2.7] o [python-3.x]. Cuando utilice una variante de Python (por ejemplo, Jython, PyPy) o una biblioteca (por ejemplo, Pandas y NumPy), inclúyala en las etiquetas.