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