python filter函数(传入多个参数)

描述
用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法
filter(function, iterable)

参数介绍

  • function -- 判断函数。
  • iterable -- 可迭代对象。

实例

  1. 过滤出列表中的奇数
newlist = filter(lambda a: a % 2 == 1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(list(newlist))
  1. 从多个区间列表中筛选符合条件的数据(传入多个参数)
def filter_data_from_range_list(range_list, data):
    """
    从多个区间列表中筛选符合条件的数据
    :param data:
    :param range_list:
    :return:
    """
    if range_list:
        for range in range_list:
            if len(range) == 2:
                left, right = range[0], range[1]
                if left and right and left <= data and data < right:
                    return True
                if left and not right and left <= data:
                    return True
                if right and not left and data < right:
                    return True
        return False
    else:
        return True

range_l = [(None, 5), (20, 50)]
datas = [1, 2, 3, 20, 30, 50, 100, 150]

# 方法1
res_01 = filter(lambda seq: filter_data_from_range_list(range_l, seq), datas)
print(list(res_01))
# 方法2
res_02 = filter(partial(filter_data_from_range_list, range_l), datas)
print(list(res_02))

注:partial() 固定某些参数并返回一个新的callable对象。这个新的callable接受未赋值的参数, 然后跟之前已经赋值过的参数合并起来,最后将所有参数传递给原始函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容