He escrito una función en Python que devuelve múltiples valores uno tras otro. ¿Cómo almaceno estos valores en una lista?

No está claro exactamente a qué te refieres. Una interpretación de que su función es un generador (usando el yield ) o de lo contrario devuelve un iterable. Es decir, su interfaz es

 a = f() first_value = next(a) second_value = next(b) 

En este caso, puede usar el constructor de la list :

 l = list(f()) 

También puede querer decir que la función f devuelve valores diferentes cuando llama a f varias veces y desea una lista de estos valores. En ese caso, probablemente sea más fácil escribir un bucle. El aspecto exacto de esto dependerá de cuál sea su condición de detención, pero podría verse así:

 l = [] while True: a = f() if a is None: break else: l.append(a) 

Si quiere decir que su función está devolviendo una tupla:

 def fn(): return 1, 2, 3 a, b, c = fn() # unpack into variables tup = fn() # store in a tuple l = list(fn()) # convert tuple to list 

Después de este código, las variables serán:

  • a = 1
  • b = 2
  • c = 3
  • tup = (1, 2, 3)
  • lista = [1, 2, 3]

puede modificar su función para devolverlos como una lista

  def f ():
   volver [1, 2, 3] 

o convertir la salida devuelta a una lista

  def f ():
   volver 1, 2, 3

 resultado = lista (f ()) 

si tu función es un generador

  def f ():
   para i en [1,2,3]:
     rendimiento i

 resultado = lista (f ()) 

también devuelve una lista

Suponiendo que quiere decir que la función es en realidad un generador, simplemente use un constructor de listas, como lo hace para los rangos.

  def f (x, ...):
    ...
    rendimiento y

 X = ...
 Y = lista (f (X))

Si quisiste decir que la función está devolviendo una tupla, entonces nuevamente, usarás el constructor de la lista.

  def f (x, ...):
    ...
    devuelve y1, y2, ...

 X = ...
 Y = lista (f (X))

Sin embargo, en este caso, simplemente puede convertir el tipo de retorno a una lista dentro del alcance de la función.

  def f (x, ...):
    ...
    lista de retorno (y1, y2, ...)

 X = ...
 Y = f (X)

La versión de comprensión de la lista es un poco más compleja pero vale la pena mencionar. Usando el generador de Tom Musgrove:

  def f ():
	 para i en [1,2,3]:
		 rendimiento i
 
 resultado = [x para x en f ()]

si una función f1 debe devolver ‘a’, ‘b’ y ‘c’, lo más simple es

poner como retorno:

return [‘a’, ‘b’, ‘c’]