根据各种条件,我维持一套需要逐步缩小的集合。
例如:
acceptable = read_input()
acceptable.rank_by_x()
acceptable = set(filter(is_rank_x_top_100, acceptable))
acceptable.rank_by_y()
acceptable = set(filter(is_rank_y_top_10, acceptable))
它有效,但set(filter())
构造看起来很难看。有没有更好的方法呢?或者,只是将子类设置为添加一个执行相同操作的方法更好吗?
答案 0 :(得分:3)
如果您使用的是Python 3或Python 2.7,则可以使用set comprehensions:
acceptable = {i for i in acceptable if is_rank_x_top_100(i)}
答案 1 :(得分:2)
您可以将其折叠为:
acceptable = set()
#...
acceptable = set(filter(is_rank_y_top_10,
filter(is_rank_x_top_100, acceptable)))
或使用理解:
acceptable = set()
#...
acceptable = set(i for i in acceptable
if is_rank_x_top_100(i) and is_rank_y_top_10(i))