Python不返回过滤器对象



我有这段代码,其中active_airports是包含字典元素的列表,如下所示:

{'code' : 'ICAO Code (eg. KMIA)', 'departures' : 8, 'arrivals' : 0}
def prune_to_xa():
"""
Prunes the airport list to only XA airports
Achieves this by checking if ICAO code starts with K, PA, PH, TJ or C
"""
only_xa_airports = filter(lambda element: element['code'].startswith(("K", "PA", "PH", "TJ", "C")), active_airports)
return only_xa_airports

我可以在函数内部使用list()将过滤器对象打印为列表,并且我得到了一个正确过滤的列表。

当我尝试将返回值赋值给函数外的变量时,它变成了空。如果我尝试使用list()打印它,我得到一个空列表。

active_airports = prune_to_xa()
print(list(active_airports))

如果我运行这个,我得到:[]

你的实现对我来说是有效的,但是定义函数的正确方法是为输入定义参数(即使用全局变量是不好的做法):

def prune_to_xa(airports):
only_xa_airports = [
element for element in airports
if element["code"].startswith(("K", "PA", "PH", "TJ", "C"))
]
return only_xa_airports

active_airports = prune_to_xa(active_airports)
print(active_airports)

还请注意,我已经将filter/lambda更改为更python化的列表理解。

最新更新