Python列表过滤的几种方法及其闭包和类的实现

本文探讨了Python中列表过滤的三种方法——循环法、列表解析法和filter法,并通过闭包和类将这些方法进行整合。通过实践和错误分析,加深了对闭包及类的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只有不断地将各种语法综合应用起来,才能够发现学习中的问题,才能够越用越熟练。今天学习了列表过滤的三种方法,然后和闭包联系起来,练习了闭包的使用。又和类练习了起来,又练习了类的使用。中间犯了不少错误,从这些错误中,深化了对闭包了类的认识。

1.列表过滤的三种方法:循环法、列表解析法和filter法

#1.利用循环
def filterList1(*lst):
    b=[]
    for i in lst:
        if i>3:
            b.append(i)
    return b

f1=filterList1(1,2,3,4,5,6)
print(f1)

#2.利用列表内计算
def filterList2(*lst):
    b=[i for i in lst if i >3]#列表解析
    return b
f2=filterList2(1,2,3,4,5,6)
print(f2)

#3.利用filter
def filterList3(*lst):
    b=filter(lambda x:x>3,lst)
    return b
f3=filterList3(1,2,3,4,5,6)
print(list(f3))#注意此句。

2.利用闭包把三种方法组合成一个函数

##利用闭包把几种方法综合在一起
def filterList(*lst):
    def filterList_loop():
        b=[]
        for i in lst:
            if i>3:
                b.append(i)
        return b 

    def filterList_parse():
        b=[i for i in lst if i >3]#列表解析
        return b

    def filterList3():
        b=filter(lambda x:x>3,lst)
        return b
    return filterList_loop,filterList_parse,filterList3

a,b,c=filterList(1,2,3,4,5,6,7,8,9)
print(a())
print(b())
print(list(c()))

或者这样:

def filterList_other():
    def filterList_loop(*lst):
        b=[]
        for i in lst:
            if i>3:
                b.append(i)
        return b 

    def filterList_parse(*lst):
        b=[i for i in lst if i >3]#列表解析
        return b

    def filterList3(*lst):
        b=filter(lambda x:x>3,lst)
        return b
    return filterList_loop,filterList_parse,filterList3

x,y,z=filterList_other()
print(x(2,3,4,5))

3.利用类方法把这些函数组合起来

##利用类把几个函数放在一起
class filterClass(object):
    def __init__(self, *args):
        self.lst=args
    def filter_loop(self):
        b=[]
        for i in self.lst:
            if i > 3:
                b.append(i)
        return b
    def filter_parse(self):
        b=[i for i in self.lst if i>3]
        return b
    def filter_lambda(self):
        b=filter(lambda x:x>3,self.lst)
        return list(b)
cls1=filterClass(1,2,3,4,5,6)
print(cls1.filter_loop())
print(cls1.filter_parse())
print(cls1.filter_lambda())

4.输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值