一、三元运算符

就是if.....else..... 语法糖
前提:if和else只有一条语句

  

#原始版
cmd=input('cmd')
if cmd.isdigit():
print('1')
else:
print('2') 简化版:
cmd=input('cmd')
print('1') if cmd.isdigit() else print('2') #求两个数的最大值
a=20
b=30
res=a if a>b else b
print(res)

  二 、推导式

#列表推导式
dic={'a':1,'b':2,'c':3}
res=[(k,v) for k,v in dic.items()]
print(res)
#[('a',1),('b',2),('c',3)] #元组推导式
res=((k,v) for k,v in dic.items())
print(tuple(res)) #字典推导式
ls=[('a',1),('b',2),('c',3)]
res={k:v for k,v in ls}
print(res)
#{'a':1,'b':2,'c':3}

  

#案例
#将range()推导为列表
res_ls=[arg for arg in range(10)]
print(res_ls)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] #将range()推导为字典
res_dic={'a';arg for arg in range(10)}
print(res_dic)
#{‘a’:9} #key值具有唯一性,所以只生产最后一个key值 res_dic={arg:1 for arg in range(10)}
print(res_dic,type(res_dic))
#{0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1} <class 'dict'>
#在此,需要纠正一下,key值不一定是字符串,存在字符串是用来对value起描述作用 #迭代出可解压为的单列容器可以推导出字典
res-dic={v:k for k,v in enumerate('abc')}
print(res)
#{'a': 0, 'b': 1, 'c': 2}

案列

三、递归

前提:
回溯到一个有具体结果的值,开始递推
回溯与递归的条件要有规律 递归的本质:函数的自我调用 import sys
sys.setrecursionlimit(200) #手动设置递归深度
print(sys.getrecursionlimit()) #默认1000

  

# 询问第一个人年龄,回溯条件 小两岁,第五个人说出自己的年龄,推导出第一个人年龄
# 条件:下一个人的年龄比这个人年纪大两岁
def age(num):
if num==1:
return 58
temp=age(num-1)-2
return temp
res=age(5)
print(res) #求一个数的阶乘
def factorial(num):
if num==1:
return 1
temp=num*factorial(num-1)
return temp
res=factorial(5)
print(res)
#

递归案例

四、匿名函数

匿名函数:没有函数名的函数
语法组成:lambda 参数列表:一个返回值表达式 没有函数名,没有函数体,只有一个返回值
关键字:lambda
参数列表省略()
返回值return关键字也被省略 f=lambda x,y:(x+y,x-y) # 参数列表:返回值(只能返回一个值)
print(f(10,20)) #(30,-10) #应用场景
# 1.匿名函数函数地址可以被一个变量接受,该变量就可以作为函数名来使用,但就违背了匿名初衷
# 2.结合内置函数来使用: 内置函数某些参数需要一个函数地址,
# -- 可以赋值一个有名函数名,也可以直接赋值匿名函数 res=max(10,20,30,40)
print(res) #40 res=max({10,20,30,40})
print(res) #40

  

匿名函数与内置函数的简单配合
#lambda 单独使用
res=(lambda i:i*2) #给i传值,返回值为i*2
print(res(10)) #20 #max与函数配合使用
def fn(i):
return i
res=max((1,2,3,4,5),key=fn) #将前面可迭代对象解压给后面的函数使用,比较i的大小,最后返回元组里面最大的一个元素
print(res) #5 #max与lambda配合使用
res=max([5,4,7,6],key=lambda i:i%5) #将列表里的元素依次取出给lambda 里的i传值,取i%5的最大值,最后返回i给res
print(res) #4

  

五、内置函数的使用

#1、min max 与lambda的搭配使用

iterable = {
'Bob': 12000,
'Tom': 37000,
'Jerry': 76000,
'Zero': 120,
}
#求工资最低的那位
res=min(iterable,key=lambda x:iterable[x])
print(res) #Zero #求工资最低的金额
res=min(iterable.values(),key=lambda x:x) #加上了.values(),代表从字典里的值中判断最小的元素,然后将该元素返回
print(res) #120

iterable = {
'Bob': {'no': 100, 'salary': 12000},
'Tom': {'no': 200, 'salary': 37000},
'Jerry': {'no': 50, 'salary': 76000},
'Zero': {'no': 150, 'salary': 120},
}
#求编号最小的那位
res=min(iterable,key=lambda k:iterable[k]['no'])
print(res) #Jerry #求薪水最低的那位
res=min(iterable,key=lambda k:iterable[k]['salary'])
print(res) #Zero

  

#2、sorted的使用  排序

tup=(1,3,4,5,6)
res=sorted(tup,key=lambda X:X%5 ) #将tup解压取值,X对5取余,默认按从小到大对tup里的元素排序,返回
print(res) #[5, 1, 6, 3, 4] res=sorted(tup,key=lambda x:x%5,reverse=True)#改变默认值,从大到小进行排序
print(res) #[4, 3, 1, 6, 5]
iterable = {
'Bob': [100, 12000],
'Tom': [200, 37000],
'Jerry': [50, 76000],
'Zero': [150, 120],
}
res = sorted(iterable, key=lambda x: iterable[x][0]) #从小到大
print(res) # ['Jerry', 'Bob', 'Zero', 'Tom']

  

#3.map的使用   映射

map的语法:map(function, iterable, ...)

map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 def fn(x):
return x*x
res=map(fn,[1,2,3,4]) #将列表里的元素解压赋值给fn,返回x*x
print(list(res)) #[1, 4, 9, 16] #与lambda搭配使用
res=map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 第一个x为参数,x**2为返回值,[.....]列表里的元素解压给返回值,生成一个新的列表
print(list(res)) #[1, 4, 9, 16, 25] #稍复杂
res=map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10,11])
# 将两个列表里的相同位置解压给返回值x+y,后面的列表多出的一个元素虽然会解压,但是不会去赋值给y,最终得到一个新的列表
print(list(res)) #[3, 7, 11, 15, 19]

  

4. reduce   合并

语法: reduce(function, sequence, initial=None)
function:有两个参数的函数,必需参数
sequence:tuple,list,dictonary,str等可以迭代物,必需参数
initial:初始值,可选参数 关于initial,如果传入了initial值,那么首先传的就不是sequence的第一第二个元素,而是initial的值和第一个元素。最后合并序列得到的是一个单一的返回值 解释:reduce()函数会将数据集合(列表,元组等)中的所有数据进行下列操作:用传给reduce()中的函数先对集合中的第一第二个元素进行操作,得到的结果再与第三个数据用function()函数运算,最后得到一个结果
from functools import reduce
#基础使用
def fn(x,y):
return x+y
res=reduce(fn,(1,2,3,4,5))
print(res) #15 #与lambda搭配使用
res = reduce(lambda f, n: f * n, [1, 2, 3, 4, 5])
print(res) #120 #改变了默认值:
res=reduce(lambda f,n:f*n,[1,2,3,4,5],10) #不需要给定initial=10这种,直接给值就行
print(res) #1200

 

#小点:
# 运算
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]) # 偶数才能通过过滤 #过滤 filter filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
语法:filter(function or None, iterable)
注意:python2.7返回列表,python3.x返回迭代器对象
需要接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,
然后返回 True 或 False,最后将返回 True 的元素放到新列表中。 #基础用法
def is_odd(n):
return n%2==0
newlist=filter(is_odd,range(1,11)) #过滤掉奇数
print(list(newlist)) #[2, 4, 6, 8, 10] #结合lambda使用
newlist=filter(lambda x:x%2==1,range(1,11)) #过滤掉偶数
print(list(newlist)) #[1, 3, 5, 7, 9]

  

#还有一些算法处理,进制转换,类型装换的内置方法待续

 

day 14 三元运算符,列表字典推导式,递归,匿名函数,内置函数(排序,映射,过滤,合并)的更多相关文章

  1. 周末学习笔记——day02(带参装饰器,wraps修改文档注释,三元表达式,列表字典推导式,迭代器,生成器,枚举对象,递归)

    一,复习 ''' 1.函数的参数:实参与形参 形参:定义函数()中出现的参数 实参:调用函数()中出现的参数 形参拿到实参的值,如果整体赋值(自己改变存放值的地址),实参不会改变,(可变类型)如果修改 ...

  2. python之三元表达式,列表|字典推导式,函数对象

    #### 三元表达式: 就是if....else...的语法糖 # -- 1) 只能解决if...else...结构,其他if分支结构都不管 # -- 2)一个分支提供一个结果: 如果一个分支提供了多 ...

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

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

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

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

  5. Python基础之函数:4、二分法、三元表达式、生成/推导式、匿名函数、内置函数

    目录 一.算法简介之二分法 1.什么是算法 2.算法的应用场景 3.二分法 二.三元表达式 1.简介及用法 三.各种生成式 1.列表生成式 2.字典生成式 3.集合生成式 四.匿名函数 五.常见内置函 ...

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

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

  7. python之三元表达式与生成式与匿名与内置函数(部分)

    目录 三元表达式 各种生成式 列表生成式(可同样作用于集合) 字典生成式 匿名函数 重要内置函数 map() zip() filter() reduce() 常见内置函数(部分) 三元表达式 三元表达 ...

  8. Python12之列表3(列表常用操作符,以及常用的内置函数)

    一.比较操作符: list1 > list2             比较两个列表的大小,Python会直接从列表的第0个元素进行比较,若相等,则继续下一个比较 得到的结果是布尔值 二.逻辑操作 ...

  9. Day 14 三元运算符,列表推导式,内置函数

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

随机推荐

  1. Descriptio Resource Path LocationType Archive for required library: 'D:/apache-maven/apache-maven-3.6.0/mavenrepository/org/springframework/spring-aspects/4.3.7.RELEASE/spring-aspects-4.3.7.RELEASE.

    eclipse创建了一个maven项目后,在导入依赖包后返现项目有个红色刺眼的感叹号,再看控制台有个Problem提示 Descriptio Resource Path LocationType Ar ...

  2. 算法 set / multiset -- lower_bound()的二分搜索

    lower_bound() 在数组中搜索时 搜不到 返回 .end(), 若需要返回0,用upper_bound()-lower_bound() 若要返回下一个下标  则需要在set / multis ...

  3. (转)通过maven,给没有pom文件的jar包生成pom文件,maven项目引入本地jar包

    文章完全转载自 : https://blog.csdn.net/qq_31289187/article/details/81117478 问题一: 经常遇到公司私服或者中央仓库没有的jar包,然后通过 ...

  4. 外排序 External sorting

    2019-04-17 18:11:34 外排序(External sorting)是指能够处理极大量数据的排序算法.通常来说,外排序处理的数据不能一次装入内存,只能放在读写较慢的外存储器(通常是硬盘) ...

  5. 如何成为F1车手?

    sorry,玩了几天的GT sport才发现赛车有多难,理论的最佳走线是存在的,但是真实的赛道实在是千变万化,弯道形状角度.高低差.F1还有温度和风速,甚至是路面上的一个碎石都会极大地影响你的成绩.赛 ...

  6. windows命令行经ss代理

    set http_proxy=http://127.0.0.1:port set https_proxy=http://127.0.0.1:port ss设置,启用系统代理,pac模式

  7. 杂记:Django和static,Nginx配置路径,json_schema

    前记:知识无处不在,要懂得珍惜,找到适合自己的方法高效地学习有价值的知识,不念过去,不畏将来. Django对待静态资源,在非前后端分离时的常识 Django会对项目app下的static文件夹的静态 ...

  8. JAVA程序设计的第一次作业

    这是我第一次接触博客,刚开始用博客很生疏,感觉很麻烦,但是后来慢慢从老师那里了解到了许多博客可以带给我们的便利.通过博客,我们不仅可以记录自己从刚开始进入程序学习的懵懵懂懂到后来想要学,想深究,想探讨 ...

  9. Activity与Fragment数据传递之Fragment从Activity获取数据

    整理Fragment与Activity之间的数据交换,大体上包括三种: 1.Fragment从Activity获取数据 2.Activity从Fragment获取数据 3.Fragment之间获取数据 ...

  10. OpenBUGS抽样数据基本操作

    新建两个文件 第一个文件写操作程序,第二个文件写数据数量,类似于下图 鼠标聚焦在第一个文件中,点击工具栏的Model,选择Specification,然后点击check Moel,会有弹框出现 点击确 ...