初次编辑2017年10月29日,星期日
摘要
引用:百度
- 内置函数
- 匿名函数
一. 上节课复习
- 声明式编程
- 列表解析
- 生成器表达式
二.内置函数
- 常见内置函数
print(abs(-1)) #取绝对值
print(all(iterable )) #可迭代参数 iterable 中的所有元素是否不为 0、''、False 或者 iterable 为空,如果是返回 True,否则返回 False;注意:空元组、空列表返回值为True
print(any(iterable )) #可迭代参数 iterable 是否全部为空对象,如果都为空、0、false,则返回 False,如果不都为空、0、false,则返回 True;注意:空元组、空列表返回值为False
print(bin(X)) #一个整数 int 或者长整数 long int 转换成二进制
print(bytes('hello',encoding='utf-8')) #将字符串转换成字节形式,可指定字符编码
print(callable(sum)) #检测一个对象是否可以被调用
print(chr(65)) #返回ASCII码对应字符
print(ord('A')) #返回ASCII码对应的数字
complex() #创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数
dir() #不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
divmod() #把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)
enumerate() #同时列出数据和数据下标,一般用在 for 循环当中
hash() #获取取一个对象(字符串或者数值等)的哈希值,一般用于校验,哈希值不能逆推
hex() #十进制转十六进制
id() #可以返回一个对象的身份,返回值为整数
- max和min函数
#max 和 min
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
def get_value(key):
return salaries[key]
print(max(salaries)) #max进行比较时,默认按照字典的key去比较,得到的返回值也是字典的key
print(max(salaries,key = get_value))
#max会将前面的可迭代对象变成生成器,每次next,将返回值传给后面的参数get_value;
#函数get_value返回key对应的值,赋值给key,然后会按照key进行比较
- 数据类型
#数据类型
int
num = 1 #num = int(1)
print(type(num)) #查看num的类型 <class 'int'>
print(isinstance(num,int)) #判断num是否为int类型 True
print(num is 1) #is 是身份运算,根据id去判断身份 True
str
list
x = []
x = list(i for i in rang(10))
tuple
dict
d = {'a':1 }
d = dict(a=1) #工厂函数,等价于上面
set
frozenset #不可变集合
- zip函数(拉链)
- 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
- 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # zipped 为迭代器
for i in zipped:
print(i)
# (1, 4)
# (2, 5)
# (3, 6)
# 注意zip中对象的前后顺序
- sorted
#sorted基本应用
l=[3,4,1,0,9,8] #[0, 1, 3, 4, 8, 9]
print(sorted(l)) #返回值是列表,默认是升序 [9, 8, 4, 3, 1, 0]
print(sorted(l,reverse=True)) #降序排列
s='hello world'
print(sorted(s))
#[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
#sorted与字典
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
print(sorted(salaries)) #默认是按照字典salaries的key去排序 ['alex', 'egon', 'wupeiqi', 'yuanhao']
print(sorted(salaries,key=lambda k:salaries[k])) ['yuanhao', 'egon', 'wupeiqi', 'alex']
- map函数:映射
- 根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
- 根据提供的函数对指定序列做映射。
l=[1,3,5,2,0]
m=map(lambda k:k**2,l) #map是个迭代器
print(list(m)) #[1, 9, 25, 4, 0]
name_l=['alex','zhejiangF4','wupeiqi','yuanhao']
m=map(lambda name:name+'SB',name_l)
print(list(m)) #['alexSB', 'zhejiangF4SB', 'wupeiqiSB', 'yuanhaoSB']
- reduce函数:合并
- 会对参数序列中元素进行累积,用传给reduce中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果
#reduce
from functools import reduce
l=list(range(100)) #生成一个1到100的列表
print(reduce(lambda x,y:x+y,l)) #reduce 还有默认参数 用法不是很理解
- filter函数:过滤
- 序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
#filter
name_l=[
{'name':'egon','age':18},
{'name':'alex','age':1000},
{'name':'wupeiqi','age':2000}
]
f=filter(lambda d:d['age']>100,name_l)
for i in f:
print(i)
- 其他
oct() #十进制转八进制
pow(x,y,z) #返回 xy(x的y次方)的值,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z
reversed() #返回一个反转的迭代器,不修改原对象
round() #返回浮点数x的四舍五入值 注意:四舍六入五留双
#slice
slice() #切片
l=[1,2,3,4]
print(l[1:3])
s=slice(1,3)
print(l[s])
#vars
vars() #没有参数,就打印当前调用位置的属性和属性值 类似 locals()
# __import__()
import time
print(time)
m=__import__('time') #通过字符串导入模块,等于上方
print(m)
- 需了解
- 字节码
- 虚数、复数
- 工厂函数
compile()
eval()
exec()
三.匿名函数
- 匿名函数
#匿名函数
lambda key:salaries[key]
#等同于
def get_value(key):
return salaries[key]
# 上面的max函数可以用匿名函数实现(与字典)
print(max(salaries, key=lambda key:salaries[key]))
作业
今日总结
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">