def partition(predicates, elements):
"""
将元素列表根据谓词列表分为True和False两部分
参数:
predicates:谓词列表
elements:元素列表
返回值:
由元素组成的二元组列表,第一个列表是谓词为True的元素,第二个列表是谓词为False的元素
"""
# 初始化结果列表
result = [[], []]
# 分别处理True和False的元素
for element in elements:
for i in range(len(predicates)):
if predicates[i](element):
result[0].append(element)
break
elif i == len(predicates) - 1: # 所有谓词都返回False,则加入False列表
result[1].append(element)
# 返回结果
return result
使用方法示例:
# 定义谓词列表
predicates1 = [lambda x: x < 5, lambda x: x % 2 == 0]
predicates2 = [lambda x: x > 10, lambda x: x % 3 == 0]
# 定义元素列表
elements = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
# 对元素列表进行分区
result1 = partition(predicates1, elements)
result2 = partition(predicates2, elements)
# 输出结果
print(result1) # [[1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]]
print(result2) # [[11, 12, 15], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14