2to3
我正在使用该工具从 Py2 -> Py3 移植一堆脚本。一个特别建议的更改让我有点困惑,所以我很感激一些帮助:
原行是:
for r in filter(lambda r: r.dir == direction, hm_regions):
... # do stuff with r
hm_regions
持有namedtuples
一个名为的属性dir
,并使用此循环遍历与给定方向参数匹配的那些。
建议的更改是
for r in [r for r in hm_regions if r.dir == direction]:
我知道这基本上做同样的事情,所以理论上结果应该不会改变(没有尝试过)。但我发现双for
循环非常难看,而且我想这不是最漂亮、最优雅的迭代方式。
我也尝试过for r in hm_regions if r.dir == direction:
由于语法错误而失败,这有点令人沮丧。
编辑:这里的另一个问题是改变是否有意义?我意识到建议更改的潜在动机是filter
不再返回列表。但在这种情况下,我不使用列表,只是迭代它。因此它应该也能正常工作,对吧?