Python 3中,模块'itertools'没有'ifilter'属性。

38

我是Python的新手,正在尝试将一个旧的Python文件构建为Python 3。我遇到了几个编译错误,但我已经解决了它们。但是在这一点上,我遇到了以上的错误。我不知道该如何解决这个问题。代码部分看起来像下面这样。

return itertools.ifilter(lambda i: i.state == "IS", self.storage)
1个回答

46

itertools.ifilter()在Python 3中已被移除,因为内置的filter()函数现在提供了相同的功能。

如果您需要编写可以在Python 2和Python 3中运行的代码,请使用future_builtins模块中的导入(仅在Python 2中,因此请使用try...except ImportError:保护):

try:
    # Python 2
    from future_builtins import filter
except ImportError:
    # Python 3
    pass

return filter(lambda i: i.state == "IS", self.storage)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接