码迷,mamicode.com
首页 > 其他好文 > 详细

内置函数

时间:2017-08-07 13:27:03      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:.com   eva   play   对象   自己   三元   orm   for循环   技术   

内置函数有如下:

技术分享

根据分类学习会容易些

与数据类型有关的

int
#bool值为空 :None 空  0 False
bool
str
tuple
complex
float
list
set
frozenset 也是个集合 不可变集合

在面向对象里讲的

object
classmethod
staticmethod
property
delatter
hasatter
setatter
getatter
isinstance #用来判断一个变量的类型
issubclass
supper
__dict__

与生成器有关的

vars
locals
__dict__

与lambda结合使用的

max min sorted

filter map reduce

技术分享
# max min
print(max(1,2,3))
print(min(1,2,3))
‘‘‘
3
1
‘‘‘

#需求  打印出 工资最高的人名  是人名
salaries={
    egon:3000,
    alex:100000000,
    wupeiqi:10000,
    yuanhao:2000
}

print(max(salaries)) #默认比较的是key
print(max(salaries.values())) #这样打印出来的是工资最高的工资
# #思路
# #既然默认比较的是key 那么就把value搞成key 反一下
max(salaries.values())
max(salaries.keys())
print(max((zip(salaries.values(),salaries.keys()))))
‘‘‘
看似实现了 但也不是想要的效果
(100000000, ‘alex‘)
‘‘‘
#不在兜圈子 直奔主题
#max除了直接比较外,还可以指定key即指定通过什么比较

#根据以下这段代码,阐述max的工作原理
max(salaries,key=lambda name:salaries[name])
‘‘‘
max(salaries),salaries是个字典,max不指定key的话,默认就会
用自己的一个参数 salaries做比较(也就是salaries的key),然后打印
key值,现在手动给max指定了key即指定了用什么做比较,但是也不会改变最终
的打印效果,依然是max的第一个参数 salaries的key,这说明打印出来的肯定
还是个人名

控制的只能是拿什么比较  控制不了输出

max 首先读到salaries 会for循环salaries,拿到sallaries的key值,也就是
名字,然后赋值给后边的key也就是lambda,然后通过lambda得到的是字典的value
也就是薪资,那么max此时就会拿薪资做比较,拿到薪资最高的值,然后返回值对应
的名字

这样就达到了最初的效果

‘‘‘
print(max(salaries,key=lambda name:salaries[name]))
print(min(salaries,key=lambda name:salaries[name])) #min也是一样的原理
‘‘‘
alex
yuanhao
‘‘‘


#sorted
#需求:按照薪资从小到大排列人名
salaries={
    egon:3000,
    alex:100000000,
    wupeiqi:10000,
    yuanhao:2000
}
print(sorted(salaries, key=lambda name: salaries[name]))
‘‘‘
原理参照max
[‘yuanhao‘, ‘egon‘, ‘wupeiqi‘, ‘alex‘]
‘‘‘
max min sorted
技术分享
#map 映射

#需求 在每个人的名字后边加上  _sb
names=[alex,wupeiqi,yuanhao,yanglei,egon]
res=map(lambda x:x+_sb,names)
#res.__next__()
#res.__init__()  是个迭代/生成器  所以用 list查看结果
print(list(res))
‘‘‘
原理 lambda放在前边,for 循环后边的names 赋值给lamba ,lamba的
返回值就是函数的返回值 和max min有一样的也有不一样的
返回值这里不一样  注意
‘‘‘
‘‘‘
打印结果
[‘alex_sb‘, ‘wupeiqi_sb‘, ‘yuanhao_sb‘, ‘yanglei_sb‘, ‘egon_sb‘]
‘‘‘
#三元表达式
# result = 值1 if 条件 else 值2
# 如果条件为真:result = 值1
# 如果条件为假:result = 值2

res=map(lambda x: x if x==egon else x+_sb,names)
print(list(res))
‘‘‘
# [‘alex_sb‘, ‘wupeiqi_sb‘, ‘yuanhao_sb‘, ‘yanglei_sb‘, ‘egon‘]
# ‘‘‘

#reduce 合并
from functools import reduce

print(reduce(lambda x,y:x+y,range(101))) #求1-100的和
print(reduce(lambda x,y:x+y,range(101),1)) #默认初始值是0 可以手动指定 这里指定为了1
‘‘‘
5050
5051
‘‘‘

#filter 过滤
names=[alex_sb, wupeiqi_sb, yuanhao_sb, yanglei_sb, egon]
print(list(filter(lambda name:name.endswith(sb),names)))
‘‘‘
[‘alex_sb‘, ‘wupeiqi_sb‘, ‘yuanhao_sb‘, ‘yanglei_sb‘]
‘‘‘
map reduce filter

其他常用的

了解的

compile
eval
exec
format 和字符串的format 不一样 没什么用
hash 不怎么用

 

内置函数

标签:.com   eva   play   对象   自己   三元   orm   for循环   技术   

原文地址:http://www.cnblogs.com/lazyball/p/7298375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!