gpt4 book ai didi

python - 设计过滤函数的谓词

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:21 24 4
gpt4 key购买 nike

我为我的作业内置了这个过滤功能。

def filter(pred, seq):
if seq == ():
return ()
elif pred(seq[0]):
return (seq[0],) filter(pred, seq[1:])
else:
return filter(pred, seq[1:])

我们应该使用设计的过滤函数(覆盖更强大的 python 版本)将给定函数转换为只有一个返回行的函数。

我们应该转换的代码是这样的:

def lookup_bus_stop_by_road(stops, road):
matched = ()
for bus_stop in stops:
if get_road_name(bus_stop) == road:
matched = matched + (bus_stop, )
return matched

我的问题是:我应该如何通过适应给定的lookup_bus_Stop_by_road函数来转换过滤器函数的谓词?但我总是遇到 TypeError: bool object not callable 。

这是我输入的返回行:

def lookup_bus_stop_by_road(stops, road):
return filter(get_road_name(bus_stops) == road, stops)

这里出了什么问题?

最佳答案

get_road_name(bus_stops) == road 

是一个 bool 值,而不是一个函数。您想要做的是创建一个调用 get_road_name 的函数并检查结果是否等于 road

filter(lambda x: get_road_name(x) == road, stops)

有关此主题的更多阅读,请参阅此处:https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions

关于python - 设计过滤函数的谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39660329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com