今日总结
- 三元表达式
- 各种生成式
- 匿名函数
- 常见重要内置函数
- 常见内置函数
三元表达式
# 三元表达式一般是出现在那种二选一的情景下,比方说比较两个数的大小,还有单if分支判断。
eg:
# 一般函数:
如果用户是jason,则打印管理员,否则打印DSB
username = input('username>>>:').strip()
if username == 'jason':
print('管理员')
else:
print('DSB')
# 三元表达式:
username = input('username>>>:').strip()
res = '管理员' if username == 'jason' else 'DSB'
print(res)
# 值1 if 条件 else 值2
条件如果成立的话就使用值1(if前面的数据)
条件如果不成立的话就使用值2(else后面的数据)
# 三元表达式最好不要嵌套使用,因为代码的前提就是简洁易读
各种生成式(目的就是为了简化代码)
# 1.列表生成式
主要目的就是简化代码
eg:
name_list = ['jason','kevin','tony','oscar','jerry']
'将列表中所有的名字后面加上_DSB'
# 列表生成式:res = [name+'_DSB' for name in name_list]
# print(res)
列表生成式复杂用法具备筛选能力
res = [name'_DSB' for name in name_list if name == 'jason']
print(res)
res = [name'_DSB' for name in name_list if name !== 'jason']
print(res)
# 操作流程是:1.先读取中间for name in name_list(相当于for循环列表),2.第二步就是判断if name == 'jason',最后再看前面的需求name'_DSB'.
# 列表生成式中值允许出现for和if,不能出现else,因为会产生歧义,for和if都能结合else
# 2.字典生成式
eg:
l1 = ['name','age','pwd']
l2 = ['jason',18,123]
将上述两个列表分别制作成字典的键值对
res = {l1[i]: l2[i] for i in range(len(l1))}
paint(res) # i代表元素,就是将l1与l2列表中的元素按元素所处的位置一一对应,组成键值对
# res = {'name': 'jason', 'age': 18, 'pwd': 123}
res = {l1[i]:l2[i] for i in range(len(l1)) if i == 1}
print(res) # 先将l1与l2列表组合成字典,然后再索引取值取字典里的1
# res = {'age': 18}
# 3.集合生成式
res = {i for i in range(10)}
print(res) # 依次打印0-9,因为顾头不顾尾
res = {i for i in range(10) if i != 2}
print(res) # 依次打印除了2的0-9的数字
匿名函数
# 匿名函数就是指函数没有函数名,需要结合其它函数一起使用
eg: lambda x:x+2
# 普通函数 def index(x):
return x + 2
# 匿名函数 print(lambda x:x+2)
# max:统计最大值
l1 = [1,2,12,3,4,34,5,6,56,7,8,78,9,0,90,99]
print(max(l1)) # 直接获取数据集中最大的值
# print(max())只能用于数字集合,如果遇上字典的话,只会默认获取K值,而且如果K值是字符串的英文字母的话,那么它就会按照ASCII码表转成与其字母对应的数字比较比较,那样子是不准确的,所以字典的统计最大值的代码是:
print(max(info,key=lambda key:info[key]))
#拆解成普通函数就是:
def index(k):
return info[k]
print(max(info,key=index)) # key对应的函数返回什么,max就以什么做比较的依据,比较的是v,返回的是k,key相当于是可以更改比较规则的参数
常见重要内置函数
# 1.map映射
l1 = [11,22,33,44,55]
需求:元素全部加10
def index(n):
return n + 10
res = map(index,l1)
print(list(res)) # 不能写print(res),因为返回出来之后是一个列表
# 匿名函数:res = map(lambda x: x + 10, l1)
print(list(res))
# 2.zip拉链
l1 = [11,22,33,44]
l2 = ['a','b','c','d']
需求:将两个列表中的元素一一对应成对
res = zip(l1,l2)
print(list(res))
# zip能够整合多个数据集,如果数据集里面的元素个数不一致时,就依据元素个数少的整合
# 整合的话也可以使用列表生成式:
res = [(l1[i],l2[i]) for i in range(len(l1))]
print(res)
# 3.内置函数之filter过滤
l1 = [10,20,30,40,50]
需求:筛选出大于25的元素
def index(x):
return x > 25
res = filter(index,l1)
print(list(res))
# 匿名函数:res = filter(lambda x:x>25,l1)
print(list(res))
# 4.reduce归总
l1 = [1,2,3,4]
需求:将列表中所有的元素相加
# 普通函数
def index(x,y):
return x + y
res = reduce(index,l1)
print(res)
# 匿名函数:res = reduce(lambdax,y: x + y, l1)
print(res)
常见内置函数
# 1.abs():获取绝对值,不管正负数
# 2.all()与any()
l1 = [0,1,0,1,1,0,1,True]
print(all(l1)) # 结果是False,表示数据集中必须所有的元素对应的布尔值为True,返回的结果才是True
print(any(l1)) # 结果是True,表示数据集中只要有元素对应的布尔值为True,返回的结果就是True
# 3.bin(),oct(),hex():产生对应的机制数
# print(bin(100)) #0b1100100
# print(oct(100)) #0o144
# print(hex(100)) #0x64
# 4.bytes():类型转换,就是任意数据类型转二进制
# 针对编码与解码,可以使用关键字encode与decode,也可以使用bytes和str
# 5.callable():判断当前对象是否可以加括号调用
eg: name = 'a'
def index():
pass
print(callable(name)) # 结果是False,变量名不能加括号调用
print(callable(index)) # 结果是True,函数名可以加括号调用
# 6.chr(),ord():字符与数字的对应转换,依据ASCII码
print(chr(65)) # A 根据数字转字符
print(ord('A')) # 65 根据字符转数字
# 7.dir() 返回数据类型可以调用的内置方法(查看对象内部可调用的属性)
print(dir(123))
print(dir('jason'))
# 8.divmod:相当于是数学里的进一法,只要有余数就进一
print(divmod(250,25))
结果是(10,0),第一个参数是整数部分,第二个是余数部分
eg:def get_page_num(total_num,page_num): # 后面django分页器使用
more,others = divmod(total_num, page_num)
if others:
more += 1
print('需要%s页'%more)
# 9.enumerate() :枚举
name_list = ['a','b','c','d']
for name in name_list:
print(name)
# 枚举:for i, j in enumerate(name_list):
print(i,j) # i类似于是计数,默认从0开始
for i,j in enumerate(name_list,start=1):
print(i,j) # 控制起始位置
# 10.eval(),exec():识别字符串中的python代码
# eval(res)只能识别简单的逻辑python代码
# exec(res)能够识别具有一定逻辑的Python代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人