filter()用法的差异

时间:2017-03-02 11:06:42

标签: python python-3.x filter

我发现filter(function, iterable)不再有返回列表,而是可迭代的过滤器对象(对于Python 3)。它必须转换为如下列表:list(filter(find_first, groups))。另外,我希望在传递给函数之前首先评估参数。

我发现了filter()的奇怪行为,我不明白:

# scale_groups is of type list
res = filter(find_first, scale_groups)
first = list(res)
res2 = list(filter(find_first, scale_groups))

我希望firstres2包含相同的元素,但first 空列表res2包含预期的一个元素

def get_first_scale_group_by_name(self, name):
    scale_groups = self.as_client.describe_auto_scaling_groups()['AutoScalingGroups']

    def find_first(group):
        return group['AutoScalingGroupName'].startswith(name)
    res = filter(find_first, scale_groups)
    res2 = list(filter(find_first, scale_groups))
    first = list(res)
    return first

0 个答案:

没有答案