One of the functional programmation pattern I enjoy and use the most is sequence container destructuration: when you use pattern matching, for example. (Haskell uses the [x:xs] syntaxic sugar).
Destructuration is just a fancy name for slicing a list.
Most of the time you use it to get the head of your list, and the rest of it appart. And I found it lacking in python (correct me if I'm wrong) when I was trying to do such things :
commands = ([signal, key, value], ...)
for command in commands:
signal, args = **destructuring command**
Of course I could have used two lines like this :
signal = command.pop(0)
args = command
But it sounded important to me to be able to do it in one line, and without altering the original container. So here's my snippet for destructuration :
from collections import Sequence
if isinstance(container, Sequence):
return container, container[1:]
raise DestructurationError("Can't destructurate a non-sequence container")
That in my case you can use like :
>>> signal, args = destructurate(command)