Code Explaination: Spelling correction code

Drew olsonas at gmail.com
Thu Apr 12 08:41:20 EDT 2007


On Apr 11, 11:27 pm, Steven Bethard <steven.beth... at gmail.com> wrote:
> Drew wrote:
> > I recently saw this website:http://www.norvig.com/spell-correct.html
>
> > All the code makes sense to me save one line:
>
> > def known_edits2(word):
> >     return set(e2 for e1 in edits1(word) for e2 in edits1(e1) if e2 in
> > NWORDS)
>
> This is the same as:
>
>      result = set()
>      for e1 in edits1(word):
>          for e2 in edits1(e1):
>              if e2 in NWORDS:
>                  result.add(e2)
>      return result
>
> The thing between the ``set(`` and ``)`` is called a generator
> comprehension if you'd like to look into it further.
>
> STeVe

Steve -

Thanks for the response. I'm somewhat familiar with generator/list
comprehension but was unsure how multiple statements were evaluated
when chained together. From your explanation, I'm assuming they are
evaluated from the "inside out" rather than left to right or right to
left.

Does the mean that the comprehension on the inside is always evaluated
first?

Thanks,
Drew




More information about the Python-list mailing list