10.函数的进阶(2)

1.内间函数

python中已经内建了大量的,可以实现各种功能的函数,提供给开发人员直接使用

①查看内建函数

>>> dir(__builtins__)
'abs', 获取绝对值
'all', 'any', 
'ascii', 将一个数据转换成ascii码表示形式
'bin', 将一个十进制数据,转换成二进制数据
'bool', 表示布尔类型,可以将其他类型的数据转换成bool类型
'breakpoint', 'bytearray', 'bytes', 'callable', 
'chr', 将一个字符转换成ascii码整数
'classmethod', 'compile', 
'complex', 数值(整数、浮点数、复数complex)
'copyright', 'credits', 'delattr', 
'dict', 表示字典类型,可以将其他类型的数据转换成字典
'dir', 辅助函数,查看指定数据的操作方式
'divmod', 
'enumerate', for循环的时候,给循环的数据添加索引
'eval', 将一个字符串数据,转换成python代码
'exec', 
'exit', 退出系统
'filter', 
'float', 表示浮点数,可以将其他类型的数据转换成浮点数
'format', 'frozenset', 'getattr', 
'globals', 查看全局变量的函数
'hasattr', 'hash', 
'help', 辅助函数,查看指定函数的操作方式
'hex', 将十进制数据,转换成十六进制
'id', 查看一个变量中存储的内存地址
'input', 用户从键盘输入数据
'int', 描述整数类型,可以将其他类型转换成整数数据
'isinstance', 'issubclass', 'iter', 
'len', 查看组合数据类型中数据的个数
'license', 
'list', 组合数据类型中的列表类型,可以将其他类型数据转换成列表
'locals', 'map', 
'max', 在一串相同数据类型的数据中,查询最大的数据
'min', 在一串相同数据类型的数据中,查询最小的数据
'memoryview', 'next', 'object', 
'oct', 将一个十进制数据,转换成八进制
'open', 'ord', 'pow', 
'print', 标准输出
'property', 'quit', 
'range', 获取一个范围数据的
'repr', 'reversed', 'round', 
'set',  组合数据类型中的集合,可以将其他类型的数据转换成集合
'setattr', 'slice', 'sorted', 'staticmethod', 
'str', 字符串类型,可以将其他类型的数据转换成字符串
'sum', 对相同数据类型的多个数据求和
'super', 
'tuple', 元组类型,可以将其他类型的数据转换成元组
'type', 查看目标变量中存储的数据的具体数据类型 
'vars', 'zip'

2.高阶函数

高阶函数也是一种内建函数,功能相对而言更加强大,能包含一定的业务处理流程,工程项目中使用比较频繁,如filter(),map(),zip()

(1)filter(fn,iter)-

  • filter()函数的,按照一定的规则(自定义条件)对目标数据(iter)进行过滤的行为
  • fn:自定义函数,函数内部添加了数据过滤的条件
  • iter:可迭代对象,通指的是能用for循环遍历的数据
# 英雄列表
# ①
heros = ['jialuo','ad','达摩','a','laofuzi','nvwa','donghuangtaiyi','mingshiyin']
# 账号长度小于6的过滤出来
hero = list()
for h in heros:
    if len(h) >6:
        hero.append(h)
print(hero)
# ②
hero2 = [hero for hero in heros if len(hero)>6]
print(hero2)
# ③函数中可以定义更加复杂的数据过滤条件
def heroes(name):
    return len(name)>6
hero3 = filter(heroes,heros)
print(list(hero3))

(2)map(fn,iter)

map(fn,iter)函数是用于可迭代数据(能用for循环遍历的数据)的映射转换(依次修改数据)

  • fn:函数,用于定义数的修改规则
  • iter:可迭代数据
# 修改:需要将英雄账号中的每个账号,前缀添加offcn
# ①
heroes5 = list()
for h in heros :
    heroes5.append("offcn_" + h)
print(heroes5)
# ②
heroes6 = ["offcn_" + x for x in heros ]
print(heroes6)
# ③ map()
def modify(name):
    """修改数据的函数"""
    return "offcn_" + name

heroes7 = map(modify, heros )
print(heroes7)
print(list(heroes7))

(3)zip(*iter)

zip(*iter)用于多个可迭代数据合并的函数

  • *iter:可变参数,可以接收一个或者多个可迭代数据
name = ['jialuo','houyi','mingshiyin','daji','damo']
gender = ['female','male','male','female','male']
age = [24,28,33,20,30]
# ①
persons = list()
for i,n in enumerate(name):
    person = (n,gender[i],age[i])
    persons.append(person)
print(persons)

# ②
persons2 = zip(name,gender,age)
print(persons2)
print(list(persons2))

3.匿名函数 & lambda表达式

匿名函数:就是没用名称的函数,主要是通过lambda表达式体现
lambda表达式:是一种特殊的表达式语法,python中支持这样的语法操作.

(1) lambda表达式语法

lambda参数列表:表达式
lambda表达式,主要是用来优化一些简单的函数操作,函数内部只有一行代码,函数可以当成参数传递给其他函数

def calculation(num1, num2, fn):
    """计算数据的函数"""
    return fn(num1, num2)

# 加法
res = calculation(10, 20, lambda x, y: x + y)
print(res)

# 幂运算(lambda表达式实现的 匿名函数)
res = calculation(2, 8, lambda x, y: x ** y)
print(res)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值