一、三目(元)运算符

定义:就是 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)
案例  求两个数最大值

a=20
b=30 res=a if a>b else b
print(res)
res='b为小值'if a>b else 'a为小值 ' # 求小值
print(res)
三元运算符的结果不一定要与条件有直接性关系
判断大小:不管前面赋值的一个结果,只需要在判断中考虑谁大就输出哪个值:如考虑a大就要将条件写在前面

二、推导式

列表推导式:[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}
dic={'a':1,'b':2,'c':3}    # 将字典转换成列表[('a',1),('b',2),('c',3)]

res=[(k,v)for k,v in dic.items()]
print(res) # 输出结果[('a',1),('b',2),('c',3)] print('=================================') 元祖推导式 res=((k,v)for k,v in dic.items())
还可以直接强转为元祖
print(tuple(res)) #输出结果:(('a', 1), ('b', 2), ('c', 3)) 字典推导式
ls=[('a',1),('b',2),('c',3)] # >>>{'a':1,'b',2,'c:3'}
res={k:v for k,v in ls }
print(res) # 输出结果{'a': 1, 'b': 2, 'c': 3} 案例
rang(10)可以推导为列表
res_ls=[arg for arg in range(10)]
print(res_ls) # 输出结果[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
res_dic={'a':arg for arg in range(10)}
print(res_dic) # 输出结果{'a': 9}
res_dic={arg:'a' for arg in range(10)}
print(res_dic) # 输出结果{0: 'a', 1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: 'a', 6: 'a', 7: 'a', 8: 'a', 9: 'a'} 迭代出可解压的单列容器可以推导出字典
res_dic={v:k for k,v in enumerate('abc')}
print(res_dic) # 输出结果{'a': 0, 'b': 1, 'c': 2}

 

三、递归

递归:就是回溯与递推
前体:要有一个具体结果的值,开始递推
条件:要有规律(是有序的、一致的)
本质:函数的自我调用(自己调自己) 回溯:询问答案的过程
递推:推出答案的过程
import sys
sys.setrecursionlimit(100) #手动设置递归的深度(没有意义)
print(sys.getrecursionlimit()) count=0
def a():
global count
count+=1
if count>50:
return
a()
a() 函数间接调用自己:一旦形成循环调用,就产生了递归
def b():
c()
def c():
d()
def d():
b() b()
 案例:
询问第一个人的年龄,回溯条件小两岁,第五个人说出自己的年龄,推导出第一个人的年龄
条件:下一个年龄比这个人年纪大两岁 def get_age(num): #获得年龄
if num==1:
return 58
age=get_age(num-1)-2
return age
res=get_age(5)
print(res) 阶乘
def factorial(num):
if num==1:
return 1
temp=num*factorial(num-1)# >>>> 5*4*3*3*1
return temp
res=factorial(5)
print(res) # 5 !=5*4! 4!=4*3!......2!=2*1

四、匿名函数

匿名函数:没有名字的函数
没有函数名和函数体,只有一个返回值
关键字 lambda |参数列表省略()|返回值return关键字也被省略
lambda x,y:x+y
需要和内置函数结合使用 有函数名的函数运算
f=lambda x,y:x+y
print(f)
print(f(10,20)) # 输出30 f=lambda x,y:(x+y,x-y) # (x+y,x-y)还是代表是输出的是一个值
print(f)
print(f(10,20)) #输出(30 ,-10)
应用场景:
1、匿名函数函数地址可以被一个变量接受,该变量就可以作为函数名来使用,但违背了匿名初衷
2、结合内置函数来使用:内置函数某些参数需要一个函数地址,可以赋值一个有名函数名,也可以直接赋值匿名函数 res=(10,20,50,30)
print(res) res=max({10,20,50,30})
print(res) print('====================================')
def fn(arg):
print(arg)
return arg
ls =[100,200,50,10]
res=max(ls,key=fn)
print(res) # 输出:100 200 print('====================================')
res1=max(ls,key=lambda ele:ele)
print(res1)
# 输出结果200

五、内置函数

# 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
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()) open()
range()
先行了解
t = max(iter, fn) max(iter lambda k: i[k])
temp = None
for k in iter:
res = fn(k)
# res作为比较的条件
# temp存放以res比较得到的最大值
return temp

  

Python——day14 三目运算、推导式、递归、匿名、内置函数的更多相关文章

  1. day14 十四、三元运算符,推导式,匿名内置函数

    一.三元(目)运算符 1.就是if...else...语法糖 前提:if和else只有一条语句 # 原来的做法 cmd = input('cmd:>>>') if cmd.isdig ...

  2. python 全栈开发,Day14(列表推导式,生成器表达式,内置函数)

    一.列表生成式 生成1-100的列表 li = [] for i in range(1,101): li.append(i) print(li) 执行输出: [1,2,3...] 生成python1期 ...

  3. day12——生成器、推导式、简单内置函数

    day12 生成器 迭代器:python中内置的一种节省空间的工具 生成器的本质就是一个迭代器 迭代器和生成器的区别:一个是pyhton自带的,一个是程序员自己写的 写一个生成器 基于函数 在函数中将 ...

  4. 简学Python第三章__函数式编程、递归、内置函数

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  5. Day3 - Python基础3 函数、递归、内置函数

    Python之路,Day3 - Python基础3   本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...

  6. Python基础3 函数、递归、内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  7. Python之路【第四篇】: 函数、递归、内置函数

    一. 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 while True: i ...

  8. Python学习之路6☞函数,递归,内置函数

    一python中的函数 函数是逻辑结构化和过程化的一种编程方法. python中函数定义方法: def test(x): "The function definitions" x+ ...

  9. Python之函数、递归、内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

随机推荐

  1. F7里利用DIV 模拟 textarea 显示回行的问题解决

    <div class="card-content-inner" style="word-wrap:break-word;word-break:break-all;w ...

  2. 创建线程的一般方式和匿名内部类方式对比——实现runnable接口,重新run方法

    启动:使用静态代理设计模式 优点:可同时实现继承,避免单继承局限性 一般方式: Programer.java /** * 真实角色 * * @author :liuqi * @date :2018-0 ...

  3. [转]HTML5 script 标签的 crossorigin 属性到底有什么用?

    HTML5 script 标签的 crossorigin 属性到底有什么用? 最近Bootstrap 4已经正式发布了,可能已经有爱尝鲜的小伙伴在 alpha 阶段就尝试过 BS4.不过今天要说的不是 ...

  4. MDK的一些小应用

    一:MDK生成bin文件 Options(魔术棒)  ->  User  ->  After Build/rebuild  ->  Run#1(前边打钩) (后边的方框输入一段内容) ...

  5. 勾勾街——一个专注于免越狱免签名的苹果ios APP打包生成的网站

    自涛舅舅研发的“苹果ios APP自助生成系统”上线以来,每天都有大量的用户注册和生成免越狱app,为什么? 因为我们有明显的技术优势,APP不需要上架appstore, 生成APP又不需要企业签名证 ...

  6. jQuery(一)

    jquery介绍 jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. ...

  7. Oracle DBLINK的相关知识整理

    一.DBLINK(Database Link)概念 dblink,顾名思义就是数据库的链接.当我们要跨本地数据库访问另一个数据库中的表的数据时,在本地数据库中就必须要创建远程数据库的dblink,通过 ...

  8. React组件和生命周期简介

        React 简介----React 是 Facebook 出品的一套颠覆式的前端开发类库.为什么说它是颠覆式的呢? 内存维护虚拟 DOM 对于传统的 DOM 维护,我们的步骤可能是:1.初始化 ...

  9. 高精度乘法-17南宁区域赛F -The Chosen One

    题目大意:给你一个n,然后从1~n隔一个选一个,挑出一个集合然后从集合中继续隔一个挑一个,直到只有一个数,问最后一个数是多少?2<=n<=1050 例如n=5,先选出2,4最后选择4.n= ...

  10. Java课程之团队开发(团队介绍)

    一.介绍团队和团队成员 团队名称:凯域软创 团队成员介绍:张某某,崔某某,焦某某,陈某 二.关于团队作品 1.作品名称:课程表 2.你的创意解决了用户的什么需求:查看课程信息的需求 3.你有什么招数用 ...