Python全栈之路Day23

初次编辑2017年10月29日,星期日

摘要

引用:百度

  1. 内置函数
  2. 匿名函数

一. 上节课复习

  1. 声明式编程
    1. 列表解析
    2. 生成器表达式

二.内置函数

  1. 常见内置函数
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()    #可以返回一个对象的身份,返回值为整数
  1. 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进行比较
  1. 数据类型
#数据类型
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    #不可变集合
  1. 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中对象的前后顺序
  1. 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']
  1. 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']
  1. 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 还有默认参数 用法不是很理解
  1. 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)
  1. 其他
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)
  1. 需了解
    • 字节码
    • 虚数、复数
    • 工厂函数
compile()
eval()
exec()

三.匿名函数

  1. 匿名函数
#匿名函数
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;">

原文地址:https://www.cnblogs.com/sama/p/7825415.html