我发现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))
我希望first
和res2
包含相同的元素,但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