yield all entries of an iterable
Stefan Schwarzer
sschwarzer at sschwarzer.net
Sun Oct 24 19:37:37 EDT 2010
Hi Cameron,
On 2010-10-25 01:08, Cameron Simpson wrote:
> On 24Oct2010 20:58, Stefan Schwarzer <sschwarzer at sschwarzer.net> wrote:
> | On 2010-10-21 00:27, Sebastian wrote:
> | > Is there a simpler way to yield all elements of a sequence than this?
> | > for x in xs:
> | > yield x
> |
> | Can you give an example where you would need this? Can't
> | you just iterate over the sequence?
>
> The usual example is when the sequence comes from inside.
> Example, closely resembling some code from on of my projects:
>
> def leaves(N):
> if N.isleaf:
> yield N
> for subN in N.subnodes:
> for leaf in leaves(subN):
> yield leaf
>
> which walks a tree structure returning leaf nodes.
>
> The point is that you're calling leaves() on the subnode and yiled them
> directly to the outside. The caller may not even know there are "subnodes".
>From the question and the code snippet the OP gave I assumed
he meant that there already was a sequence (i. e. linear
structure) to begin with.
By the way, I think a well-known example of what you
describe is `os.walk`.
Stefan
More information about the Python-list
mailing list