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

2021-09-11 01:10:59 字數 2263 閱讀 9330

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

1.列表過濾的三種方法:迴圈法、列表解析法和filter法

#1.利用迴圈

def filterlist1(*lst):

b=for i in lst:

if i>3:

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:

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:

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:

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

python 列表拷貝的幾種方法

new old python老鳥都知道以上 是什麼意思。它複製列表old到new。它對於新手來說是種困惑而且應該避免使用這種方法。不幸的是 標記法被廣泛使用,可能是python程式設計師不知道更好的列表複製法吧。首先我們需要了解python是如何管理物件和變數。python沒有c語言中的變數。在c語...

python 列表去重 陣列 的幾種方法

一 方法1 如下 複製 思路看起來比較清晰簡單 也可以保持之前的排列順序。二 方法2 通過set方法進行處理 如下 複製 ids 1,4,3,3,4,2,3,4,5,6,1 ids list set ids 處理起來比較簡單,使用了集合方法set進行處理,不過結果不會保留之前的順序。三 方法3 利用...

資料列表過濾重複值幾種方法的效能比較

在現代日常應用中資料中有重複值,但我們需要過濾成一條的需求越來越多,那麼如何在程式中設計過濾演算法,同時還要考慮演算法效率,因此這成了值得關注的問題 下面對兩種演算法進行比較 方法一.用hashtable來過濾重複值 protected void button1 click object sende...