Explanation of this Python language feature? [x for x in x for x in x] (to flatten a nested list)

Marko Rauhamaa marko at pacujo.net
Mon Mar 24 08:36:48 EDT 2014


Chris Angelico <rosuav at gmail.com>:

> Similarly, there are plenty of cases where a nameless function is MUCH
> clearer than breaking it out into a separate def and then using the
> name once. Do you name the function for what it does internally?
>
> def get_oneth_element_index(item):
>     return item[1].index
> L.sort(key=get_oneth_element_index)
>
> Or for how you're using it?
>
> def keyfunc(item):
>     return item[1].index
> L.sort(key=keyfunc)
>
> Or do you just shortcut the whole thing by inlining it?
>
> L.sort(key=lambda item:item[1].index)

I still prefer the "def" variant. It even allows you to clarify the
meaning of the tuple slot by using a nicer name.


Marko



More information about the Python-list mailing list