博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python列表推导同filter和map的比较
阅读量:5044 次
发布时间:2019-06-12

本文共 1090 字,大约阅读时间需要 3 分钟。

首先介绍下filter和map:

filter:

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

filter(function, iterable): function:判断函数,iterable:可迭代对象

def is_odd(n):    return n % 2 == 1 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])print(newlist) # [1, 3, 5, 7, 9]

map:

map(function, iterable, ...)会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

Python 2.x 返回列表。

Python 3.x 返回迭代器。

def square(x) :            # 计算平方数     return x ** 2map(square, [1,2,3,4,5])   # 计算列表各个元素的平方# [1, 4, 9, 16, 25]map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数# [1, 4, 9, 16, 25] # 提供了两个列表,对相同位置的列表数据进行相加map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])# [3, 7, 11, 15, 19]

 

列表推导同filter和map的比较

symbols = '$¢£¥€¤'beyond_ascii = [ord(s) for s in symbols if ord(s) > 127]print(beyond_ascii)# [162, 163, 165, 8364, 164]beyond_ascii = list(filter(lambda c: c > 127, map(ord, symbols)))print(beyond_ascii)# [162, 163, 165, 8364, 164]

 

转载于:https://www.cnblogs.com/xiangxiaolin/p/11571492.html

你可能感兴趣的文章
二进制文件的查看和编辑
查看>>
C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
查看>>
Hack工具
查看>>
多余的判断
查看>>
Android开发之监听或获取手机短信内容 分类: Android 消...
查看>>
foreach---集合已修改;可能无法执行枚举操作。
查看>>
BZOJ-3505-数三角形-CQOI2014
查看>>
CentOS 安装 debuginfo-install
查看>>
CSS布局:让页底内容永远固定在底部
查看>>
RichEdit
查看>>
路由器和交换机的区别
查看>>
Coursera台大机器学习课程笔记14 -- Validation
查看>>
易之 - 我是个算命先生(2014年3月23日)
查看>>
C# :面向对象
查看>>
JavaScript中的正则表达式
查看>>
【公众号系列】SAP HANA 平台的优势
查看>>
VMware+Fedora20+secureCRT7.0配置心得
查看>>
20172328《程序设计与数据结构》第五周学习总结
查看>>
memcached完全剖析–1. memcached的基础(转)
查看>>
Eigen vs Numpy时间对比
查看>>