Python filter,map,lambda,reduce,列表解析
filter用法 filter(func,seq)
将seq的元素逐一代入func,通过func的返回值来判断是保留还是过滤
>>> def foo(x):
return x>3 >>> filter(foo,range(6))
[4, 5]
>>> filter(lambda x:x>3,range(6))
[4, 5]
#注意只需要写函数名,不带参数
map用法map(func/lambda,seq)
通过函数对队列中的每个元素进行操作,元素替换成返回值,注意是生成一个新的序列,原来的序列不会变化
>>> map(lambda x:x*2,range(6))
[0, 2, 4, 6, 8, 10]
#同样的,这里要么是lambda表达式,要不就是是个函数名
>>> a
[1, 2, 3, 4, 5, 6]
>>> map(foo,a)
[False, False, False, True, True, True]
>>> a
[1, 2, 3, 4, 5, 6]
#foo是判断x是否大于三,是返回True,否返回false
对多个序列的操作
>>> map(lambda x,y:x+y,range(4),range(5))
Traceback (most recent call last):
File "<pyshell#84>", line 1, in <module>
map(lambda x,y:x+y,range(4),range(5))
File "<pyshell#84>", line 1, in <lambda>
map(lambda x,y:x+y,range(4),range(5))
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
>>> map(lambda x,y:x+y,range(4),range(4))
[0, 2, 4, 6]
列表解析
[表达式/函数,for循环]
>>> [x**2 for x in range(6)]
[0, 1, 4, 9, 16, 25]
>>> [a**2 for x in range(6)]
[1, 1, 1, 1, 1, 1]
>>> #可见当你写一个for循环中无关的变量时,它仅仅重复表达式的结果
>>> [foo(x) for x in range(6)]
[False, False, False, False, True, True]
#这里的函数要带括号,foo同上
>>> [lambda x:x**2 for x in range(6)]
[<function <lambda> at 0x01DE8870>, <function <lambda> at 0x01DE8830>, <function <lambda> at 0x01DE88F0>, <function <lambda> at 0x01DE8930>, <function <lambda> at 0x01DE8970>, <function <lambda> at 0x01DE89B0>]
>>> [(lambda x:x**2)(x) for x in range(6)]
[0, 1, 4, 9, 16, 25]
#同样你需要把lambda看作是函数名,或者返回值
>>> [x**2 for x in range(6) if x**2>9]
[16, 25]
>>> [(x**2,y**3) for x in range(4) for y in range(3) if x>0 and y>0]
[(1, 1), (1, 8), (4, 1), (4, 8), (9, 1), (9, 8)]
>>> #将后面的for看成嵌套的,还有前面的表达式记得加括号
reduce 对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用
>>> reduce(lambda x,y:x+y,range(1,101))
5050
>>> #reduce一定是接受一个二元函数,比如上面就是 (((1+2)+3)+4)+...
>>> reduce(lambda x,y:x+y,range(1,101),100)
5150
#接受的初始值
Python filter,map,lambda,reduce,列表解析的更多相关文章
- Python【map、reduce、filter】内置函数使用说明(转载)
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- 【转】Python 中map、reduce、filter函数
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- Python【map、reduce、filter】内置函数使用说明
题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...
- (Python)list的内建函数 filter(), map(), 和 reduce()
这一节,我们将主要学习用于list的三个内建函数: filter(), map(), 和 reduce(). 1.filter(function, sequence) 逐个从sequence中取一个 ...
- 转:Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- Python里的map、reduce、filter、lambda、列表推导式
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- Python一些特殊用法(map、reduce、filter、lambda、列表推导式等)
Map函数: 原型:map(function, sequence),作用是将一个列表映射到另一个列表, 使用方法: def f(x): return x**2 l = range(1,10) map( ...
- python中reduce filter map lambda函数
lambda函数 python 使用 lambda 来创建匿名函数,lambda返回值是一个函数的地址,也就是函数对象. 语法:lambda [arg1 [,arg2,.....argn]]:expr ...
- python filter map reduce
filter(function, iterable): Construct a list from those elements of iterable for which function retu ...
随机推荐
- Leetcode 155 Min Stack 小顶堆+栈,优先队列实现 难度:0
https://leetcode.com/problems/min-stack/ #include <vector> #include <queue> #include < ...
- JDBC成绩管理系统
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq ...
- WaitForSingleObject 和 WaitForMultipleObjects函数
1.WaitForSingleObject 等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止.这些等待函数中最常用的是WaitForSingleObject: DWORD ...
- surface实例-小球弹起事例
ball.java package com.example.sufacedemo; import android.graphics.Bitmap; import android.graphics.Bi ...
- PHP中的null合并运算符
project: blog target: null-coalesce-operator-in-php.md date: 2015-12-30 status: publish tags: - Null ...
- windows核心编程---第五章 线程的基础
与前面介绍的进程一样,线程也有两部分组成.一个是线程内核对象.它是一个数据结构,操作系统用它来管理线程以及用它来存储线程的一些统计信息.另一个是线程栈,用于维护线程执行时所需的所有函数参数和局部变量. ...
- ios学习之UISwipeGestureRecognizer手势识别
ios学习之UISwipeGestureRecognizer手势识别 本文部分转自俺是一个瓜娃!!!的博客UISwipeGestureRecognizer ---手指动作,转载过来仅是为了自己查询 ...
- xcode armv6 armv7 armv7s arm64
目前ios的指令集有以下几种: armv6 iPhone iPhone2 iPhone3G 第一代和第二代iPod Touch armv7 iPhone4 iPhone4S armv7s iPhone ...
- 《JavaScript模式》第3章 字面量和构造函数
@by Ruth92(转载请注明出处) 第3章:字面量和构造函数 一.创建对象的三种方式 // 对象字面量 var car = {goes: "far"}; // 内置构造函数(反 ...
- (实用篇)jQuery二级联动代码
jquery二级联动城市代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...