函数(二):input、raw_input、lambda、repr、map、filter、reduce、eval、exec、range、xrange
一、input()和raw_input():
input()支持用户输入数字或表达式,按类型存或存表达式的计算结果
raw_input():输入所有内容当成字符串存
二、lambda函数:匿名函数
lambda只是一个表达式,函数体比def简单的多
lambda的主体是一个表达式,而不是一个代码块。
lambda函数拥有自己的名字空间,且不能访问自由参数列表之外全局名字空间里的参数
lambda会返回一个函数对象,但这个对象不会赋值给一个标识符,而def则会把函数对象赋值给一个变量(函数名)
if或for或print等语句不能用于lambda中 lambda函数不能共享给别的程序调用,def定义的函数可以
语法 :
lambda [arg1[,arg2[,arg3...argn]]]:expression
>>> list1=[lambda a:a**3,lambda b:b**2]
>>> print list1
[<function <lambda> at 0x0000000003449A58>, <function <lambda> at 0x0000000003449AC8>]
>>> print list1[0]
<function <lambda> at 0x0000000003449A58>
>>> print list1[1]
<function <lambda> at 0x0000000003449AC8>
>>> g=list1[0]
>>> g(3)
27
>>> h=list1[1]
>>> h(2)
4
>>> h(4)
16
>>>
三、repr函数
用来取得对象的规范字符串表示。
反引号(也称转换符`)可以完成相同的功能。
注意:大多数时候有eval(repr(object))==object 可以通过定义类的__repr__方法来控制你的对象在被repr函数调用的时候返回的内容。
四、map函数
将每个列表元素或字符串都执行某个函数
map函数的操作方法:
它将每个字符串或者列表元素,应用某个函数方法,结果返回列表。
将函数func作用于这个seq的每个元素上,并得到一个新的seq.
>>> a=[1,2,3,4]
>>> lista=map(str,a)
>>> print lista ['1', '2', '3', '4']
>>>
>>> map(int,"12345")
[1, 2, 3, 4, 5]
>>>
>>> map(lambda x,y:x+y,[2,4,6],[3,2,1])
[5, 6, 7]
>>>
map函数无法处理seq长度不一致、对应位置操作数类型不一致的情况,会报类型错误。
>>> map(lambda x,y:(x**y,x+y),[2,4,6],[3,2,4,5]) #报错
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <lambda>
TypeError: unsupported operand type(s) for ** or pow(): 'NoneType' and 'int'
>>> map(lambda x,y:(x**y,x+y),[2,4,6],[3,2,4])
[(8, 5), (16, 6), (1296, 10)]
>>>
五、filter函数:
filter()函数可以对序列做过滤处理,就是说可以使用一个自定义的函数,过滤一个序列 ,把序列的每一项传到自定义的过滤函数里处理,并将返回结果做过滤。最终一次性返回过滤后的 结果。
filter()函数有两个参数:
第一个是:自定义函数名,必须的
第二个是:需要过滤的序列,也是必须的
>>> def getsomenum(num):
... if num>5 and num<10:
... return num
...
>>> seq=[12,50,6,5,1,3,11,7,9,10]
>>> filter(getsomenum,seq)
[6, 7, 9]
>>>
六、reduce内建函数
reduce内建函数是一个二元操作函数,用来将一个集合(链表,元组等)中的所有数据进行下列 操作:
用传给reduce中的函数func()(必须是一个二元操作函数)先对集合的第1,2个数据进行操作 ,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。(是一个累积的结果)
>>> reduce(lambda x,y:x+y,[1,2,3,4,5])
15
>>>
>>> reduce(lambda x,y:x+y,[1,2,3,4,5],0) #第一次把0给x,列表给y
15
>>>
>>> def fn(x,y):
... return x*10+y
...
>>> def char2num(s):
... return{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[s]
...
>>> reduce(fn,map(char2num,"13579"))
13579
>>>
七、exec函数:
有时候可能会需要动态地创建python代码,然后将其他为语句或作为表达式去执行。
exec语句用来执行存储在字符串或文本中有效的python语句。
>>> exec("print 'hello python'")
hello python
>>>
>>> def printsrt():
...print "hello word"
... >>>
>>> exec("printsrt()")
hello word
>>>
八、eval函数
eval()语句用来计算存储在字符串中的有效Python表达式,并返回计算结果
>>> s="3*4+18"
>>> eval(s)
30
>>>
>>> def printStr():
... print "hello word"
... return 1
...
>>> print eval("printStr()")
hello word
1
>>>
>>> a="[[1,2],[3,4],[5,6]]"
>>> print eval(a)
[[1, 2], [3, 4], [5, 6]]
>>> b="{1:'xx',2:'yy'}"
>>> print eval(b)
{1: 'xx', 2: 'yy'}
>>> c="(1,2,3,4)"
>>> print eval(c)
(1, 2, 3, 4)
>>>
>>> list1=[1,2,3,4]
>>> type(`list1`)
<type 'str'>
>>> type(eval(`list1`))
<type 'list'>
>>> print eval(`list1`)
[1, 2, 3, 4]
>>>
九、exec与eval的区别:
exec()和eval()都可以动态的执行存储在字符串或文本中的有效python表达式;
区别:
exec()执行python语句没有返回值;
而eval()有返回值
十、range和xrange的区别:
rang会直接生成一个list对象;
xrange不会直接生成一个list,而是每次调用返回其中的一个值【xrange返回的是一个生成器】
>>> a=range(1,100)
>>> type(a)
<type 'list'>
>>> b=xrange(1,100)
>>> type(b)
<type 'xrange'>
>>>
函数(二):input、raw_input、lambda、repr、map、filter、reduce、eval、exec、range、xrange的更多相关文章
- python lambda表达式&map/filter/reduce
习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: 1 2 3 4 5 6 7 8 # 普通条件语句 if 1 == 1: name = 'wupeiqi' else ...
- python 内置函数 map filter reduce lambda
map(函数名,可遍历迭代的对象) # 列组元素全加 10 # map(需要做什么的函数,遍历迭代对象)函数 map()遍历序列得到一个列表,列表的序号和个数和原来一样 l = [2,3,4,5,6, ...
- python 函数对象(函数式编程 lambda、map、filter、reduce)、闭包(closure)
1.函数对象 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 秉承着一切皆对象的理念,我们再次回头来看函数(function).函 ...
- lambda、map、reduce、filter函数讲解
# coding:utf-8 """ 几个特殊的函数: lambda lambda后面直接跟变量 变量后面是冒号 冒号后面是表达式,表达式计算结果就是本函数的返回值 作用 ...
- python常用函数进阶(2)之map,filter,reduce,zip
Basic Python : Map, Filter, Reduce, Zip 1-Map() 1.1 Syntax # fun : a function applying to the iterab ...
- 如何在python3.3用 map filter reduce
在3.3里,如果直接使用map(), filter(), reduce(), 会出现 >>> def f(x): return x % 2 != 0 and x % 3 != 0 ...
- 数组的高阶方法map filter reduce的使用
数组中常用的高阶方法: foreach map filter reduce some every 在这些方法中都是对数组中每一个元素进行遍历操作,只有foreach是没有 ...
- Swift map filter reduce 使用指南
转载:https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/ Using map, filter or reduce to ope ...
- python几个特别函数map filter reduce lambda
lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话,写成这样 g = l ...
- lambda表达式&map&filter&yield
一.先来看下lambda表达式 1.lambda表达式其实很简单,他是简单的函数的变种,只有三部分组成,之前老师没有讲清楚,今天看书,终于明白了,写个博客记录下 lambda关键字+参数+返回值,参数 ...
随机推荐
- 20165323 结对编程之四则运算week2-整体总结
一.需求 实现一个命令行程序,要求: 1.自动生成小学四则运算题目(加.减.乘.除) 2.支持整数 3.支持多运算符(比如生成包含100个运算符的题目) 4.支持真分数 5.能判断错误,在输入错误结果 ...
- vue中的provide/inject的学习使用
irst:定义一个parent component ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <template> <div> ...
- Thinkphp3.1 php 链接SqlServer
ThinkPHP链接 M("lk_employeeInfo","Null/表前缀","sqlsrv://账号:密码@服务器:端口/数据库") ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- mycql 多表联合查询
egon笔记: 1 单表查询 select distinct 字段1,字段2,字段3 from 表 where 约束条件 group by 分组字段 having 过滤条件 order by 排序字段 ...
- radio按钮单选效果
必须有name,并且是同一值,判断效果可用value值确定
- IntelliJ IDEA 插件 阿里巴巴Java开发手册(Alibaba Java Coding Guidelines)
以前看到过个:Java开发手册(阿里巴巴-公开版),这是个pdf文档,里面描述了一些Java开发的规约,里面确实有很多好用的规约,要是在学校就有机会看看的话,那么,在毕业之后,实际工作中就会少很多坑. ...
- ps选区的两种复制方法
1.选区选中之后,利用移动工具,按住alt键,拖动即可复制所选区域. ps:再一个图层上操作. 2.选区选中之后,Ctrl+c .Ctrl+v复制粘贴,按Ctrl+T移动. ps:新建一个图层操作,不 ...
- BZOJ.1492.[NOI2007]货币兑换(DP 斜率优化 CDQ分治/Splay)
BZOJ 洛谷 如果某天能够赚钱,那么一定会在这天把手上的金券全卖掉.同样如果某天要买,一定会把所有钱花光. 那么令\(f_i\)表示到第\(i\)天所拥有的最多钱数(此时手上没有任何金券),可以选择 ...
- java发送邮件高级篇
package com.xiets.javamaildemo; import java.util.Date; import java.util.Properties; import javax.act ...