Quiero hacer algunas coincidencias de patrones en listas en Python. Por ejemplo, en Haskell, puedo hacer algo como lo siguiente:Coincidencia de patrones de listas en Python
fun (head : rest) = ...
Así que cuando paso en una lista, head
será el primer elemento, y rest
serán los elementos que se arrastran.
Del mismo modo, en Python, puedo descomprimir automáticamente tuplas:
(var1, var2) = func_that_returns_a_tuple()
Quiero hacer algo similar con listas en Python. En este momento, tengo una función que devuelve una lista, y un trozo de código que hace lo siguiente:
ls = my_func()
(head, rest) = (ls[0], ls[1:])
Me preguntaba si de alguna manera podría hacer eso en una sola línea en Python, en lugar de dos.
Por supuesto se puede poner ese lambda en la misma línea con todo lo demás: cabeza, resto = (lambda lst: (lst [0], lst [1:])) (my_func()) –
Sí, pero eso comienza a rayar en la ofuscación. –
+1 para la nueva característica de Python 3 y vinculación al PEP. – fossilet