一.今日内容总览

1.内置函数(1):并不是每一个内置函数都是那么常用

上菜:内置函数部分//思维导图:https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac

2.匿名函数

3.map\filter\sorted\zip

4.eval\exec\compile

二.今日内容大纲

1.内置函数(1)

2.匿名函数

3.map\filter\sorted\zip

4.eval\exec\compile

三.今日内容详解

1.内置函数(1)

(1)

lst=['今天星期三','明天星期四','马上星期五']
# 法一
it=lst.__iter__()
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(dir(it))
#法二     #等价写法
it=iter(lst)          # it = lst.__iter__()
print(next(it))       # it.__next__()
print(next(it))
print(next(it))
print(dir(it))

(2)

#print
print('你好,我叫娃哈哈',end='  ')    #去掉换行
print('你好,我叫周润发')
#
print('宝浪','女神','日天','MJJ','太白')#这是打印的效果#宝浪 女神 日天 MJJ 太白
#注意:python里的self都不用管print('宝浪','女神','日天','MJJ','太白',sep='_')
# sep=' '默认是空格,我们可以进行修改'''
结果:
你好,我叫娃哈哈  你好,我叫周润发
宝浪 女神 日天 MJJ 太白
宝浪_女神_日天_MJJ_太白
'''

(3)

hash  #四大不可变数据类型:数字&bool&元组&字符串

数字算出来就是数字本身,其他的数据算完是一坨很长的数字print(hash(12344543))       #hash算法,最后算出来的一定是一个数字

len(),出来的是数字就认为是哈希算法,以后用到哈希,可以用len()

print(id('呵呵'))   #id计算的是内存地址,深浅拷贝中讲过,is 比较的是内存地址== 比较的是值

(4)
这个直接用import吧,以后碰到再说# __import__()   动态导入模块//很容易出错,很危险re=__import__(input('请输入你要导入的模块:'))re.search()(5)
#在黑窗口中看源代码

#help查看帮助.....高级框架

# print(help(str))# #尤其是高级框架的源代码,比如flask &tornado(1000行)的源代码(6)
callable() 能调用iterable  可迭代hashable  可哈希

例子:func是否是可调用的,也就是能不能加括号
def func():pass
an=18
print(callable(func()))     #不可调用的print(callable(func))     #可调用的
print(callable(an))       `#不可调用的

可调用 =>  可以加(),进行调用

(7)

dir 查看数据类型有哪些操作

此类型的数据可以执行哪些方法(函数)
print(dir('ni hao'))
print(dir([]))[].count()

(8)

复数=实数(有理数,无理数(无限不循环小数))+虚数 i**2=-1

注意:专业的东西 做专业的事儿!!!!!!shell就是写脚本的

手机=>任何位置打电话MP3=>  耳机+功效

数字类型(int bool float complex)

(9)
bin  #计算二进制 binaryprint(bin(5))     #转化成二进制    0b101  二进制print(oct(8))     #八进制      #0o10print(hex(16))    #十六进制    #0x10'''二进制(binary)没有2八进制(octonary)没有8十六进制(hexadecimal)没有16'''def func():    passprint(func)     #内存地址:<function func at 0x000001D8864C1E18>

(10)
必须是可迭代对象min  max sum
print(sum([1,2,3,4,5]))
print(max([1,2,3,4,5]))
print(min([1,2,3,4,5]))print(divmod(20,3))  #计算商和余数
#结果(6, 2)

(11)

print(round(2.6))  #整数是奇数=> 正常四舍五入#整数是偶数=>五舍六入
print(round(2.5))
print(round(1.5))
print(round(1.6))print(pow(4,4))
#4的4次方

(12)

lis=['篮球','足球','摔跤','挤公交']for el in lis:print(el)
#记住这个然哥
for i in range(len(lis)):print(i,lis[i])for i,el in enumerate(lis,1):print(i,el)for i,el in enumerate(lis):print(i,el)

enumerate 以元组形式返回!!!索引!!!和!!!元素!!!,我们进行拆分enumerate #第二个参数的设置起始位置,注意修改的时候需要减一

(13)

#any all
#all必须全是真,才是真
print(all([1,3,'哈哈']))      #all 就是and
#any一个是真就是真
print(any([False,1,None]))   #any 就是or

(14)

zip 拉链函数

lst1=['赵四','刘能','香秀']
lst2=['刘小光','王小利'] #水桶效应
lst3=['街舞','磕巴','哭']
z=zip(lst1,lst2,lst3)
print('__iter__'in dir(z))  #判断是否是可迭代对象
#这个__iter__是否在这拉链包起来的
for el in z:print(el)

应用场景:卫星数据,横向时间切割,应用的就是拉链

#金融数据的同一时段对比可能会用到

2.匿名函数\map\filter\sorted\zip

(1)

def func(a,b):return a+b
ret=func(1,3)
print(ret)      #4
print(func)     #<function func at 0x000002252CFD1E18>

(2)

# 匿名函数统一的名字是:<lambda>
fn=lambda a,b:a+b         #定义一个很简单的函数. 复杂的函数不要用lambda
ret=fn(3,5)
#为什么叫匿名函数?
print(ret)      #结果:8
print(fn)       #<function <lambda> at 0x000001CC501B1E18>//打印出来的fn中名字是lambda,所以是匿名函数
# #变量名:fn

(3)

lambda使用场景:配合着sorted,map,filter 一起使用

sorted 排序函数,让你自己去定义排序的规则
lst=[11,5,36,1,27,58]
s=sorted(lst) #默认从小到大排序
print(s)

lst=['胡一菲','张伟','关谷神奇','曾小贤吕小布','若兰']
#按照字符串长度排序
def func(s):return len(s)  #返回长度
#执行流程:把可迭代对象中的每一项拿出来,作为参数传递给后面key函数,
#函数返回数字,根据数字进行排序
a=sorted(lst,key=func)
print(a)

#传统写法:
lst=['胡一菲','张伟','关谷神奇','曾小贤吕小布','若兰']
def func(s):return len(s)  #返回长度
a=sorted(lst,key=func)
print(a)#lambda写法:
lst=['胡一菲','张伟','关谷神奇','曾小贤吕小布','若兰']
s=sorted(lst,key=lambda k:len(k),reverse=False)
print(s)
#注意:这里的是拿出lst中的每一项对其进行排序# sorted规则
# sorted(可迭代对象,规则,顺序还是倒叙)
# sorted(iterable,key,reverse)
# 说白了,内部还是用数字排序的# sorted中reverse默认是False
lst=['胡一菲','张伟','关谷神奇','曾小贤吕小布','若兰']
s=sorted(lst,key=lambda k:len(k),reverse=False)
print(s)

(4)sorted

lst=[{'name':'alex','shenggao':150,'tizhong':'250'},{'name':'wusir','shenggao':158,'tizhong':'150'},{'name':'taibai','shenggao':177,'tizhong':'130'},{'name':'ritian','shenggao':165,'tizhong':'130'},{'name':'nvshen','shenggao':160,'tizhong':'120'},{'name':'baoyuan','shenggao':183,'tizhong':'190'},
]
# 按照体重进行排序,从大到小
print(sorted(lst,key=lambda dic:dic['tizhong'],reverse=True))
# 按照身高进行排序,从大到小
print(sorted(lst,key=lambda dic:dic['shengao'],reverse=True))

(5)filter() 过滤

lst=['张无忌','张翠山','范冰冰','金毛狮王','李冰冰']
# s=filter(lambda x:'张' not in x,lst)     #错误写法
# 过滤掉姓张的人
# 把可迭代对象打开. 把内部元素一个一个的传递给前面的函数. 由这个函数决定此项是否保留
s=filter(lambda x: not x.startswith('张'),lst)
print('__iter__' in dir(s))     #True
print(s)                         #<filter object at 0x0000016A2BCD74E0>
for i in s:print(i)
'''
迭代后的对象是:
范冰冰
金毛狮王
李冰冰
'''

练习:

lst=[{'name':'alex','shenggao':150,'tizhong':'250'},{'name':'wusir','shenggao':158,'tizhong':'150'},{'name':'taibai','shenggao':177,'tizhong':'130'},{'name':'ritian','shenggao':165,'tizhong':'130'},{'name':'nvshen','shenggao':160,'tizhong':'120'},{'name':'baoyuan','shenggao':183,'tizhong':'190'},
]
#过滤掉体重大于180的人,想要的是小于180的人

s=filter(lambda x:int(x['tizhong'])<180,lst)
# for i in s:
#     print(i)
print(list(s))

(6)

map() 映射函数

只对数据做处理

lst=['篮球','台球','唱歌','爬黄山','徒步']
k=map(lambda a:'爱好:'+a ,lst)
print(list(k))

练习:在列表中,求每一个数字的平方

lst=[1,5,78,12,16]
print([i**2 for i in lst])m=map(lambda i:i**2,lst)
print(list(m))

3.eval\exec\compile(这一部分还有待总结)

(1)

#注意eval慎用,安全问题# eval:是把字符串类型的数据作为代码进行执行
s='18+2'
ret=eval(s)   #执行字符串类型的代码
print(ret)      #20#计算器新写法
code=input('请输入你要执行的代码')
ret=eval(code)
print(ret)s="{'name':alex,'age':18,'isMan':False}" #字符串
# # 把字符串类型的代码还原回字典,列表,元组
ret=eval(s)  #侧重点是有返回值
print(ret)
print(type(ret))

(2)

# exec()  execute执行字符串类型的代码, 不能太长. 不能太乱
code = input("请输入你要执行的代码")
a=exec(code) # 没有返回值. 想要返回值用eval
print(a)   # pycharm报错不一定准

(3)

# compile() 编译:把你要执行的代码先预编译,通过exec和eval可以执行我们的代码
code='''
for i in range(10):if i %2==0:print(i)
'''
c=compile(code,"",'exec')  #预加载代码
exec(c)  #运行代码#应用:可以使用compile写一个编程大赛,是大赛写的程序,在相同条件下运行
#用机器,动态运行

四.作业

4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb   name=[‘oldboy’,'alex','wusir']
name=['oldboy','alex','wusir']
s=map(lambda x:x+'sb', name)
# print(s)
print(list(s))

5,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾   l=[{'name':'alex'},{'name':'y'}]
l=[{'name':'alex'},{'name':'y'}]
s=map(lambda x:x['name']+'sb',l)
print(list(s))

l=[{'name':'alex'},{'name':'y'}]
a = list(map(lambda dic:{'name':dic['name'] + 'sb'},l))
print(a)

6,用filter来处理,得到股票价格大于20的股票名字shares={       'IBM':36.6,       'Lenovo':23.2,   'oldboy':21.2,    'ocean':10.2,   }
shares={'IBM':36.6,'Lenovo':23.2,'oldboy':21.2,'ocean':10.2,}
s=filter(lambda x:shares[x]>20,shares)
print(list(s))

7,有下面字典,得到购买每只股票的总价格,并放在一个迭代器中。结果:list一下[9110.0, 27161.0,......]
portfolio=[   {'name':'IBM','shares':100,'price':91.1},   {'name':'AAPL','shares':50,'price':543.22},   {'name':'FB','shares':200,'price':21.09},   {'name':'HPQ','shares':35,'price':31.75},   {'name':'YHOO','shares':45,'price':16.35},   {'name':'ACME','shares':75,'price':115.65}]
portfolio=[{'name':'IBM','shares':100,'price':91.1},{'name':'AAPL','shares':50,'price':543.22},{'name':'FB','shares':200,'price':21.09},{'name':'HPQ','shares':35,'price':31.75},{'name':'YHOO','shares':45,'price':16.35},{'name':'ACME','shares':75,'price':115.65}]
s=map(lambda x:x['shares']*x['price'],portfolio)print(list(s))

# l=[]# for i in s:#  # print(round(i,1))#  l.append(round(i,1))# print(l)
8,还是上题的字典,用filter过滤出单价大于100的股票。
portfolio=[{'name':'IBM','shares':100,'price':91.1},{'name':'AAPL','shares':50,'price':543.22},{'name':'FB','shares':200,'price':21.09},{'name':'HPQ','shares':35,'price':31.75},{'name':'YHOO','shares':45,'price':16.35},{'name':'ACME','shares':75,'price':115.65}]
s=filter(lambda x:x['price']>100,portfolio)
print(list(s))

9,有下列三种数据类型,   l1 = [1,2,3,4,5,6]   l2 = ['oldboy','alex','wusir','太白','日天']   tu = ('**','***','****','*******')写代码,最终得到的是(每个元祖第一个元素>2,第三个*至少是4个)   [(3, 'wusir', '****'), (4, '太白', '*******')]这样的数据。 
l1 = [1,2,3,4,5,6]
l2 = ['oldboy','alex','wusir','太白','日天']
tu = ('**','***','****','*******')
lis=zip(l1,l2,tu)
s=filter(lambda x:x[0]>2 and len(x[2])>=4,lis)      #注意条件*至少是4个
print(list(s))

10,有如下数据类型:   l1 = [ {'sales_volumn': 0},          {'sales_volumn': 108},          {'sales_volumn': 337},          {'sales_volumn': 475},          {'sales_volumn': 396},          {'sales_volumn': 172},          {'sales_volumn': 9},          {'sales_volumn': 58},           {'sales_volumn': 272},           {'sales_volumn': 456},           {'sales_volumn': 440},          {'sales_volumn': 239}]将l1按照列表中的每个字典的values大小进行排序,形成一个新的列表。
l1 = [ {'sales_volumn': 0},{'sales_volumn': 108},{'sales_volumn': 337},{'sales_volumn': 475},{'sales_volumn': 396},{'sales_volumn': 172},{'sales_volumn': 9},{'sales_volumn': 58},{'sales_volumn': 272},{'sales_volumn': 456},{'sales_volumn': 440},{'sales_volumn': 239}]s=sorted(l1,key=lambda x:x['sales_volumn'],reverse=False )        #从小到大
s=sorted(l1,key=lambda x:x['sales_volumn'],reverse=True )            #从大到小
print(s)


转载于:https://www.cnblogs.com/studybrother/p/10109872.html

巨蟒python全栈开发-第13天 内置函数 匿名函数lambda相关推荐

  1. python 全栈开发,Day51(常用内置对象,函数,伪数组 arguments,关于DOM的事件操作,DOM介绍)...

    昨日内容回顾 1.三种引入方式1.行内js <div onclick = 'add(3,4)'></div>//声明一个函数function add(a,b){}2.内接js& ...

  2. 巨蟒python全栈开发-第10天 函数进阶

    一.今日主要内容总览(重点) 1.动态传参(重点) *,** *: 形参:聚合 位置参数*=>元组 关键字**=>字典 实参:打散 列表,字符串,元组=>* 字典=>** 形参 ...

  3. python点击事件onclick_巨蟒python全栈开发数据库前端6:事件onclick的两种绑定方式onblur和onfocus事件window.onload解释小米商城讲解...

    1.回顾上节内容(JavaScript) 一.JavaScript概述 1.ECMAScript和JavaScript的关系 2.ECMAScript的历史 3.JavaScript是一门前后端都可以 ...

  4. 巨蟒python全栈开发-第6天 is==

    1.小数据池 2.id 3.decode和encode 小数据池 #小数据池:不要死磕就行#python为了简化,搞出来的一个东西 ID (1)# id()函数可以帮我们查看一个变量的内存地址# a= ...

  5. Python全栈之路系列----之-----内置函数和匿名函数lamdba

    引子 什么是内置函数? 内置函数就是python 提供给我们直接拿来就可以用的函数   内置函数--内置命名空间   只管调用 不管实现 总共68个 def func(): == #这是自己定义的函数 ...

  6. 巨蟒python全栈开发-第11阶段 ansible_project2

    一个NB的网站: https://www.toolfk.com/ CDN:将用户的需求送到最近的节点:内容分发网络 有些是专门做CDN的工具 常用的markdown是需要知道的,短信有字数限制. we ...

  7. python123蟒蛇代码_巨蟒python全栈开发-第3天

    1 今日作业 1.有变量name = "aleX leNb" 完成如下操作: #1)移除 name 变量对应的值两边的空格,并输出处理结果 '''''' '''# name = & ...

  8. 巨蟒python全栈开发-第11阶段 ansible_project1

    今日大纲: 1.前端页面介绍 2.发布流程 3.需求分析 4.表结构设计 5.前端页面设计 昨日内容回顾: 1.roles - tasks- handlers- files- templates- v ...

  9. 巨蟒python全栈开发flask8 MongoDB回顾 前后端分离之H5pycharm夜神

    1.MongoDB回顾 1.启动 mongod - 改变data/db位置: --dbpath D:\data\dbmongod --install 安装windows系统服务mongod --rem ...

  10. 巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from

    一.今日主要内容总览(重点) 1.生成器(目的:帮助我们创建对象) (1)生成器的本质就是迭代器 (2)一个一个的创建对象 (3)创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 ...

最新文章

  1. python3可迭代对象、迭代器、生成器、协程yield入门
  2. C语言中:#define宏的正确使用
  3. python扫雷代码_谁说Python不能做游戏的?能做这些游戏,附赠所有游戏源码文件...
  4. 浙江省计算机二级excel函数,浙江省计算机二级excel练习5操作要求
  5. [数据库] ------ mysql 执行计划
  6. 错误Cannot resolve org.springframework.data:spring-data-redis:2.2.6 RELEASE
  7. java 接口中的成员只有静态常量和_Java中抽象类和接口的具体区别是什么?
  8. GitHub冲突解决
  9. 51CTO博客改版日记(目录) 2006年 by小废
  10. Atitit 事务的一些概念 目录 1. 事务的另一个特性:数据隔离级别 1 2. Spring五个事务隔离级别和七个事务传播行为 1 3. 在TransactionDefinition接口中定义了
  11. android 蓝牙开锁功能,蓝牙智能锁工作原理及功能介绍
  12. MNE example《Motor imagery decoding from EEG data using the Common Spatial Pattern (CSP)》
  13. 基于 M2Mqtt 和 emqx 实现的MQTT通讯
  14. SpringBoot获取访问接口设备的ip地址以及设备类型
  15. Matlab提取矩阵行数与列数
  16. Java中文件File
  17. 小技巧|CSS如何实现文字两端对齐
  18. 虚拟机下安装mysql(按相应步骤操作 / 图文)
  19. POJ 2404 Jogging Trails 笔记
  20. WPF实现微信客户端界面布局

热门文章

  1. 小马哥spring编程核心思想_《Spring Boot编程思想(核心篇)》小马哥著 PDF电子书下载...
  2. Linux下C++轻量级Web服务器
  3. 【操作系统】第十一章-多媒体操作系统
  4. 桌面上计算机程序包能删吗,不小心卸载了windows驱动程序包(电脑上别乱清理了)...
  5. Spring源码杂集
  6. 扫描隧道显微镜STM功能介绍及用途
  7. movie制作的电影站wordpress视频主题
  8. 最新鑫迪自助建站系统源码V1.1完整版
  9. 曲线拟合(多项式函数+MATLAB实例)
  10. Safari 浏览器插件(扩展)开发