资讯专栏INFORMATION COLUMN

Python map, reduce, filter和sorted

jlanglang / 1230人阅读

摘要:的函数使得函数能直接以的每个元素作为参数传递到中并返回响应的新的如下求的平方在需要对中的每个元素做转换的时候会很方便比如把中的每个转换成当然第二个参数是也可以是或者是类结构的是不行的不过返回的结果都是这里顺便说一下的结构是用表示的如是直观的

map
map(funcname, list)

python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list
如下:

def sq(x):
    return x*x  #求x的平方
map(sq, [1,3, 5,7,9]) #[1, 9, 25, 49, 81]

在需要对list中的每个元素做转换的时候, 会很方便

比如,把list中的每个int 转换成str

map(str, [23,43,4545,324]) #["23", "43", "4545", "324"]

当然, 第二个参数是list, 也可以是tuple 或者是set类list结构的, dict 是不行的,不过返回的结果都是list

map(sq, (1,3, 5,7,9)) # tuple [1, 9, 25, 49, 81]
map(sq, set([1,3, 5,3,7,9])) # set [1, 9, 81, 25, 49]

这里顺便说一下, dict的结构是用{} 表示的,如

 {"name": "Yi_Zhi_Yu", "age":25}

是直观的key-value形式, 那么如果{}中的是一个类list的结构呢, 如:

{"Yi_Zhi_Yu", 25}

其实, 这就是set的最终返回形式, 等价于:

set(["Yi_Zhi_Yu", 25])# 你会看到最终的输出形式是{25, "Yi_Zhi_Yu"}

那么, 自然{}有重复值得时候也会去重

   {1,3, 5, 3, 7, 9}  #{1, 3, 5, 7, 9}
reduce
reduce(funcname, list)

与map相比 , reduce类似于一个聚合类的应用方法, 把list中的参数, 依次传递给funcname, 每次funcname的参数都是上个funcname 执行结果和下一个list中的元素, 所以, funcname 的 参数必须是两个. 从执行过程看, 有点像递归

例如: 求range(1, 101)(不包括101)的和,

def c_sum(x, y):
    return x + y;
reduce(c_sum, range(1,101)) #5050
filter
filter(funcname, list)

执行过程依次将list中的元素传递到funcname函数中, 根据funcname返回的True或False 保留或丢弃元素

例: 返回某个list中的所有int数据

 def is_int(x):
    if isinstance(x, (int)):
        return True
    else:
        return False

 filter(is_int, ["Yi",2, "3", 4]) #[2, 4]
sorted
sorted( list, [comp_func])

排序方法, 第二个是可选参数, 根据可选参数返回的值, 对结果进行排序, comp_func 接受两个参数(x, y), 最终返回的结果应该是-1.0,1, 如果返回的是-1, 表示x , 0表示x=y, 1表示x>y, 所以, 实际的排序可以自定义
默认是正序排序:

sorted([3,4, 12, 5, 9, 1])  #[1, 3, 4, 5, 9, 12]

如果是需要倒序排列, 自定义方法:

 def m_order(x, y):
    if(x > y):
        return -1
    elif(x == y):
        return 0
    else:
        return 1
sorted([3,4, 12, 5, 9, 1], m_order)  #[12, 9, 5, 4, 3, 1]

PS: 以上为学习笔记, 如有错误, 还望指正
参考:廖雪峰Python教程

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37560.html

相关文章

  • python学习笔记-map/reduce/filter/sorted

    摘要:会依次将中的数据传递到中,根据返回的或者,留下或者抛弃这个值。而对于字符串,则是根据字符串对应的码表进行排序。同时也是一个高阶函数,可以实现自定义的排序方式。 map/reduce是一种编程思想,在各个领域都有它的实践。网上有一个简单的例子解释map/reduce。比如说你需要数一下某一个图书馆中有多少本藏书。最傻瓜的做法就是排一个人从头数到尾。这样速度慢,低效。另一种方法就是先将图书...

    用户83 评论0 收藏0
  • Python进阶笔记

    摘要:用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。和不同的是,把传入的函数依次作用于每个元素,然后根据返回值是还是决定保留还是丢弃该元素。字符串给出当前平台使用的行终止符。程序中间的退出,为正常退出。 列表生成式 函数的参数类型 lambda函数 map, reduce, filter, sorted函数 eval, exec, join, zip函数 itertools中的...

    ygyooo 评论0 收藏0
  • python_bomb----高阶函数

    摘要:高阶函数实参是一个函数名函数的返回值是一个函数传递的参数包含函数名。内置高阶函数函数函数接收两个参数一个是函数一个是序列将传入的函数依次作用到序列的每个元素并把结果作为新的返回。 高阶函数 实参是一个函数名 函数的返回值是一个函数 print(abs(-10)) f = abs print(f(-10)) #传递的参数包含函数名。 def myfun(x,y,fun): ...

    Pocher 评论0 收藏0
  • Python入门学习(七)

    摘要:在熟悉了自定义函数和函数中使用到的参数必选参数默认参数可变参数关键字参数命名关键字参数以及由函数返回值引伸出的递归和装饰器后让我们继续前行高阶函数函数接收两个参数,一个是函数,一个是,将传入的函数依次作用到序列的每个元素,并把结果作为新的返 在熟悉了自定义函数和函数中使用到的参数(必选参数, 默认参数, 可变参数, 关键字参数, 命名关键字参数), 以及由函数返回值引伸出的递归和装饰器...

    lmxdawn 评论0 收藏0
  • 3-函数式编程

    摘要:函数声明为了代码的可读性,在定义一个函数的时候,最好有其函数参数的说明。装饰器函数的代码有一定的规律,写起来大同小异,只是其中的业务逻辑不同。 函数声明 为了代码的可读性,在定义一个函数的时候,最好有其函数参数的说明。示例: def func_test(s): :type s: str :rtype: str pass 实现这种效果可以通过插...

    MyFaith 评论0 收藏0

发表评论

0条评论

jlanglang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<