Python列表過濾的幾種方法及其閉包和類的實現

只有不斷地將各種語法綜合應用起來,才能夠發現學習中的問題,才能夠越用越熟練。今天學習了列表過濾的三種方法,然後和閉包聯繫起來,練習了閉包的使用。又和類練習了起來,又練習了類的使用。中間犯了不少錯誤,從這些錯誤中,深化了對閉包了類的認識。

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.輸出結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章