三目运算符

# 三目(元)运算符:就是 if...else...语法糖
# 前提:简化if...else...结构,且两个分支有且只有一条语句
# 注:三元运算符的结果不一定要与条件直接性关系

cmd = input('cmd: ')
print('可以转化为数字') if cmd.isdigit() else print('不可以转化为数字')


a = 20
b = 30
res = a if a > b else b  # 求大值
print(res)


res = 'b为小值' if a > b else 'a为小值'  # 求小值
print(res)

推导式

# 列表推导式:[v for v in iterable]
dic = {'a': 1, 'b': 2, 'c': 3}  # => [('a', 1), ('b', 2), ('c', 3)]
res = [(k, v) for k, v in dic.items()]

# 字典推导式:{k: v fro k, v in iterable}
ls = [('a', 1), ('b', 2), ('c', 3)]  # => {'a': 1, 'b': 2, 'c': 3}
res = {k: v for k, v in ls}

递归

# ***
# 递归:回溯与递推
# 回溯:询问答案的过程
# 递推:推出答案的过程

# 本质:函数的自我调用
# 直接:自己调自己
# 间接:自己调别人,别人最终由调回自己

匿名函数

# 匿名函数:没有名字的函数
# 语法:lambda 参数列表: 一个返回值表达式

# 重点:
# 1.匿名函数:没有函数名,没有函数体,只有一个返回值
# 2.关键字:lambda | 参数列表省略() | 返回值return关键字也被省略

# 应用场景:
# 1.匿名函数函数地址可以被一个变量接受,该变量就可以作为函数名来使用,但就违背了匿名初衷
# 2.结合内置函数来使用: 内置函数某些参数需要一个函数地址,
#       -- 可以赋值一个有名函数名,也可以直接赋值匿名函数

内置函数

https://docs.python.org/zh-cn/3.7/library/functions.html#all
以下举部分内置函数例子:

# max

iterable = [1, 5, 3, 2, 7]
res = max(iterable, key=lambda x: x) # 参数:可迭代对象遍历的元素;返回值:做比较的值
print(res)

# 薪资最高
iterable = {
'Bob': 12000,
'Tom': 37000,
'Jerry': 76000,
'Zero': 120,
}
res = max(iterable, key=lambda x: iterable[x]) # x: 字典的k 返回值:做比较的值
print(res)

iterable = {
'Bob': {'no': 100, 'salary': 12000},
'Tom': {'no': 200, 'salary': 37000},
'Jerry': {'no': 50, 'salary': 76000},
'Zero': {'no': 150, 'salary': 120},
}
res = max(iterable, key=lambda k: iterable[k]['no'])
print(res)
res = max(iterable, key=lambda k: iterable[k]['salary'])
print(res)

# min
iterable = {
'Bob': [100, 12000],
'Tom': [200, 37000],
'Jerry': [50, 76000],
'Zero': [150, 120],
}
res = min(iterable, key=lambda k: iterable[k][1]) # 薪资最小
print(res)

# sorted (这里提一下sort方法,调用之后直接改变原迭代对象的值,而且没有返回值,以列表L=[1,3,2]为例,L.sort() 就行了,如果s = L.sort(),那么s值为None)
res = sorted([1, 3, 4, 2, 5], key=lambda x: x, reverse=True)
print(res)

iterable = {
'Bob': [100, 12000],
'Tom': [200, 37000],
'Jerry': [50, 76000],
'Zero': [150, 120],
}
res = sorted(iterable, key=lambda x: iterable[x][0]) # 按no排序
print(res)

# map:映射
res = map(lambda x: x + 2, [12000, 36000, 27000, 21000, 10000])
print(list(res))

from functools import reduce
# reduce: 合并
res = reduce(lambda f, n: f * n, [1, 2, 3, 4, 5])
print(res)

# 重点:
# classmethod()
# staticmenthod()
# super()
# object()

# 名称空间
# globals()
# locals()

# 反射
# getattr()
# setattr()
# delattr()

# 名称空间 <=> 可执行字符串
# exec()

# enumerate()
# isintance()
# len()
# max()
# min()
# open()
# range()
# type()
print('-----------------------------------')

'''
# 运算
print(abs(-1)) # 绝对值
print(pow(2, 3, 3)) # 2 ** 3 % 3
print(sum([1, 2, 3])) # 求和
print(divmod(100, 30)) # 100与30形成商与余数

# 集合判断操作
print(all([1, 2, 'abc'])) # 元素全真为真
print(any([1, "", None])) # 元素有真则真
filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5]) # 偶数才能通过过滤

# 原义字符串
print(ascii('\n-*..'))
print(repr('\n-*..'))
print(r'\n-*..')

# 进制
print(10)
print(bin(10))
print(oct(10))
print(hex(10))

# 类型转化
bool()
str()
bytes()
chr()
ord()
range(1, 5) # [1, 2, 3, 4]
'''
def aaa():pass
print(callable(aaa)) # 可调用的

# 可以理解将最外层''去除,形成可执行的对象
s = 'print(123)'
# print(s)
eval(s)
s = '{"a": 1}'
res = eval(s)
print(res['a'])

res = divmod(100, 30) # 100与30形成商与余数
print(res)

res = filter(lambda x: x % 2 == 0, [1, 2, 3, 4, 5])
print(list(res))

# 格式化
res = format(97, 'b')
print(res)

# 全局名称空间
print(globals())
def a():
a = 10
b = 20
print(locals())
a()

# hash算法处理
# print(hash([])) # 可变类型不可hash
# print(hash(())) # 不可变可以hash
# import uuid
# print(uuid.uuid4())

'''
t = max(iter, fn) max(iter lambda k: i[k])
temp = None
for k in iter:
res = fn(k)
# res作为比较的条件
# temp存放以res比较得到的最大值
return temp
'''

 

day 14 递归、匿名函数、内置函数的更多相关文章

  1. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  2. python 匿名函数&内置函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...

  3. python基础(14)-反射&类的内置函数

    反射 几个反射相关的函数可参考python基础(10)-匿名函数&内置函数中2.2.4反射相关 类的一些内置函数 __str__()&__repr__() 重写__str__()函数类 ...

  4. python学习day11 函数Ⅲ (内置函数与lambda表达式)

    函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...

  5. Python学习笔记014——迭代工具函数 内置函数enumerate()

    1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...

  6. python 函数--内置函数

    一.内置函数 内置函数是python自带的一系列常用函数. 二.python3中内置函数     内置功能     abs() delattr() hash() memoryview() set() ...

  7. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  8. Python——day14 三目运算、推导式、递归、匿名、内置函数

    一.三目(元)运算符 定义:就是 if...else...语法糖前提:简化if...else...结构,且两个分支有且只有一条语句注:三元运算符的结果不一定要与条件直接性关系​ cmd = input ...

  9. python基础之递归,匿名,内置函数

    递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...

  10. Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数

    上节课复习: 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res ...

随机推荐

  1. JS的forEach和map方法的区别

    一.前言 forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的.jQuery也有一个方法$.each() ...

  2. 痞子衡嵌入式:语音处理工具Jays-PySPEECH诞生记(3)- 音频显示实现(Matplotlib, NumPy1.15.0)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是语音处理工具Jays-PySPEECH诞生之音频显示实现. 音频显示是Jays-PySPEECH的主要功能,Jays-PySPEECH借 ...

  3. SSH隧道:端口转发功能详解

    SSH系列文章: SSH基础:SSH和SSH服务 SSH转发代理:ssh-agent用法详解 SSH隧道:端口转发功能详解 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host ...

  4. NLP入门(六)pyltp的介绍与使用

    pyltp的简介   语言技术平台(LTP)经过哈工大社会计算与信息检索研究中心 11 年的持续研发和推广, 是国内外最具影响力的中文处理基础平台.它提供的功能包括中文分词.词性标注.命名实体识别.依 ...

  5. __tostring()和__invoke()的用法

    PHP有很多内置的魔术方法,这里我们聊哈tostring和involk吧. __tostring()魔术方法 将一个对象当做一个字符串来使用时,会自动调用该方法,并且在该方法中,可以返回一定的字符串, ...

  6. js函数前面的+,!

    +function(){}(); 这里的加号,也可以替换成!,~等其他一元操作符,其效果相当于: (function() { console.log("Foo!"); })(); ...

  7. 前端入门11-JavaScript语法之数组

    声明 本系列文章内容全部梳理自以下几个来源: <JavaScript权威指南> MDN web docs Github:smyhvae/web Github:goddyZhao/Trans ...

  8. 轻量级应用程序Dynamics 365 App for Outlook介绍

    摘要: 本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复273或者20180625可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyon ...

  9. ArcFace虹软与Dlib人脸识别对比

    我司最近要做和人脸识别相关的产品,原来使用的是其他的在线平台,识别率和识别速度很满意,但是随着量起来的话,成本也是越来越不能接受(目前该功能我们是免费给用户使用的),而且一旦我们的设备掉线了就无法使用 ...

  10. Vysor Pro破解助手

    Vysor更新到1.7.7版本后,原来提供的VysorPro助手无法正常破解了. 针对新版本的改动,更新了一下Vysor破解助手,支持破解Vysor 1.6.6和Vysor1.7.7之间的版本. Vy ...