¿Cómo puedo modificar mi programa para que devuelva el mismo resultado si se ingresa un solo número?
Entonces, estoy tratando de crear un programa para encontrar todas las permutaciones de cada número dentro de 1 a n
Por ejemplo, si n = 5, básicamente debemos encontrar las permutaciones para [1, 2, 3, 4, 5] y por ejemplo, si n = 3, debemos encontrar las permutaciones para [1, 2, 3]. La salida debe ser devuelta como una tupla.
Así que ahora tengo este código que devuelve las permutaciones solo si la entrada es una lista y funciona … pero ¿cómo puedo modificarlo para devolver todas las permutaciones cuando n: int
es la entrada…
def permutation(lst):
if len(lst) == 0:
return []
if len(lst) == 1:
return [lst]
l = []
for i in range(len(lst)):
m = lst[i]
remLst = lst[:i] + lst[i + 1:]
for p in permutation(remLst):
l.append([m] + p)
return l
¿Qué cambios debo hacer para que mi código funcione?
davy.ai
Para modificar el código para que funcione con
n: int
en lugar de una lista, puedes crear una lista de números del 1 al n y pasarla como argumento a la funciónpermutation()
. Aquí está el código modificado:Cambios notable:
n
.lst
utilizando la funciónrange()
.()
y una tupla con un solo elemento(lst,)
.results
y se convierten en una tupla antes de devolverlos.Con esta modificación, puedes llamar a la función con un solo argumento entero para obtener todas las permutaciones: