内置函数续

 

filter 过滤

def x_1(x):
    return x % 2 == 1
ret = filter(x_1,[1,2,3,4,5,6,67,78,8,9,])
for i in ret:
    print(i)
View Code

filter接收两个参数,第一个是函数名,不能加(),第二个是可迭代的。filter会将可迭代对象里面的所有参数输入函数中并进行过滤。(最后是通过最后返回的bool值来确定的)

我们也可以用列表推导式来完成这个效果,如:

print([i for i in [1,2,3,4,5,6,67,78,8,9,]if i % 2 ==1])
View Code

但是filter可以执行更加复杂的过滤,但是结果·都是一样的。

用处:我们可以用它来删除None和空字符串。

 

作业:取1——100中所有开根号后是整数的数。

from math import sqrt
def b(x):
    return sqrt(x)%1==0
ret = filter(b,range(1,101))
for i in ret:
    print(i)
View Code

 map

把每一个参数都已相应的处理函数进行迭代处理,map()函数接收两个参数,一个函数,一个是序列。map将传入的函数依次作用到序列的每一个元素,并将结果作为新的list给返回。

ret = map(abs,[-12,-234.123,-2,234])
print(ret)
for i in ret:
    print(i)
View Code

 

sorted

参数说明:1.iterable:可迭代的

     2.key:传入一个函数名,函数的参数是可迭代类型中的每一项,根据函数的返回值大小排序。

       3,reverse:排序规则,reverse =Ture降序或者reverse = Flase升序,有默认值。

      返回值,有序列表。

l = [12,23,1,123,423,1,123,12,12,-23,-1312,-321,-3]
l.sort(key = abs)
print(l)
View Code

原列表上进行排序

sorted

l = [12,23,1,123,423,1,123,12,12,-23,-1312,-321,-3]
print(sorted(l))
View Code

 

l = [12,23,1,123,423,1,123,12,12,-23,-1312,-321,-3]
print(sorted(l,key=abs,reverse=True))
View Code

优点:生成一个新列表,不改变原列表。

确定:占内存

总结

filter 执行了filter之后的结果结合<=执行之前的个数

  filter只管筛选,不会改变原来的值。

map 执行前后元素个数不变

  值可能发生变化(因为是对值进行操作并生成一个列表)

 

posted @ 2019-08-25 23:32  套你大象  阅读(116)  评论(0编辑  收藏  举报