I am in the process of porting a bunch of scripts from Py2 -> Py3 using the `2to3` tool. One particular suggested change confused me a bit, so I'd appreciate some help with that:

The original line is:

```
for r in filter(lambda r: r.dir == direction, hm_regions):
    ... # do stuff with r

```

`hm_regions` holds `namedtuples` which have a property called `dir` and using this loop I iterate over those that match a given direction parameter. 

The suggested change is 

```
for r in [r for r in hm_regions if r.dir == direction]:

```

I understand that this does essentially the same thing, so in theory the results should not change at all (haven't tried). But I find the double `for` loop very ugly, and I guess this is not the prettiest, most graceful way to do this iteration. 

I have also tried `for r in hm_regions if r.dir == direction:` which fails due to syntax error, which was a bit of a frustration. 

**EDIT:** Another question here is if it makes sense to change at all? I realize that the underlying motivation for the the suggested change is that `filter` doesn't return a list anymore. But in this context I do not use the list, in any more than iterating over it. Thus it should work just as well, right?