生成式与内置函数

三元表达式

# 使用场景:二选一的时候推荐使用三元表达式

'''
三元表达式:
	值1 if 条件 else 值2
	如果条件成立使用值1,不成立使用值2
	三元表达式只用于二选一的情况,最好不要嵌套使用
'''

1. 求两个数中的较大数
2.如果用户名是jason打印 你好 否则打印 滚蛋
# 1.
    a = 8
    b = 9
    count = a if a>b else b
    print(count)
    
# 2. 
	name = 'jason'
    input_name = input('请输入用户名:')
    data = '你好' if input_name == name else '滚蛋'
    print(data)
# 补充:针对if分支也有简化版本
name = 'jason'
if name == 'tom': print(name)
    else: print('hhhhhh')

生成式

# 1.列表生成式
name_list = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
# 在每个元素后面追加 _name
常规写法:
    name_list = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
    list = []
    for i in name_list:
        i = i + '_name'
        list.append(i)
    name_list = list
    print(name_list)

# 使用列表生成式
name_list = [i + '_name' for i in name_list]
print(name_list)
>>> ['jason_name', 'kevin_name', 'tony_name', 'oscar_name', 'jerry_name']

# 列表生成式后面可以追加if进行筛选
name_list = [i + '_name' for i in name_list if i == 'jason']
>>> ['jason_name']
'''列表生成式中允许出现for和if,但是不能出现else 因为会产生歧义(for和if都能与else结合)'''


# 字典生成式
l1 = ['name','age','pwd']
l2 = ['jason', 18, 123]
# 将l1中的元素作为键,l2中的元素作为值,组成新的字典
常规写法
    dic = {}
    for i in range(len(l1)):
        dic[l1[i]] = l2[i]
    print(dic)
    >>>{'name': 'jason', 'age': 18, 'pwd': 123}
字典生成式
	dic = {l1[i]:l2[i] for i in range(len(l1))}
加上if判断
dic = {l1[i]:l2[i] for i in range(len(l1)) if l2[i] == 'jason'}
print(dic)
>>>{'name': 'jason'}


# 集合生成器
s = {i for i in range(10)}
print(s,type(s))
>>>{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} <class 'set'>

匿名函数

'''匿名函数的就是没有函数名的函数,匿名函数需要结合其他函数一起调用'''
# 匿名函数的定义
lambda 形参:返回值
匿名函数与max() 
# max():统计最大值
l1 = [11,32,41,22,13,66,54,78,96,34,54,99,35]
print(max(l1))
>>>99
-----------------------
info = {
    'Aason':9999999,
    'Jacob':123,
    'zark':1000,
    'berk':33
}
print(max(info))
>>>zark
'''
需要注意 max()比较最大值,可以看成是通过for循环一次比较每一个元素,但是字典for循环出来的是键,字符串大小的比较,是通过首个字符ascii码的大小来进行判断的
'''
# 在max()中使用匿名函数
info = {
    'Aason':9999999,
    'Jacob':123,
    'zark':1000,
    'berk':33
}
print(max(info,key = lambda a:info[a]))
>>>Aason
'''max内置函数有两个参数,第一个是取值容器,第二个参数是一个函数,这个函数用来接收取出来的值'''

内置函数

常见的重要内置函数

# 1.map 映射
将列表中每个元素的值加10
方法一:列表生成式
方法二:map方法
l1 = [11, 22, 33, 44, 55]
1.
    l1 = [i+10 for i in l1]
    print(l1)
2.
res = map(lambda i:i+10,l1)
print(res)  # 迭代器
print(list(res))
>>><map object at 0x000001EAFFBF9588>
>>>[21, 32, 43, 54, 65]

# 2.zip拉链
zip的作用是可以整合多个数据集,整合的结果是一个迭代器
l1 = [11, 22, 33, 44]
l2 = ['jason','kevin','tony','oscar']
l3 = [1,2,3,4]
res = zip(l1,l2,l3)
print(list(res))

>>>[(11, 'jason', 1), (22, 'kevin', 2), (33, 'tony', 3), (44, 'oscar', 4)]
'''如果数据集的长短不同,则依据短的进行整合'''
l1 = [11, 22, 44]
l2 = ['jason','kevin','tony','oscar']
l3 = [1,2]
res = zip(l1,l2,l3)
print(list(res))

>>>[(11, 'jason', 1), (22, 'kevin', 2)]


# 3.filter过滤
# 过滤掉小于30的数据
方法一:使用列表生成器
方法二:使用filter内置方法
l1 = [11, 22, 33, 44, 55, 66]
1.
	l1 = [i for i in l1 if i>30]
2.
	l1 = filter(lambda x:x>30,l1)
	print(list(l1))
    

# 4.reduce 归总
'''以前是内置函数,现在是functools模块下的子函数'''
列表中的所有元素和自增100
from functools import reduce
l1 = [11, 22, 33, 44, 55, 66]
res = reduce(lambda x,y:x+y,l1,100)
print(res)

需要了解的内置函数

# 1.abs()  获取数字型数据的绝对值
abs(-123)
# 2.all() 与 any()
l1 = [0, 0, 1, 0, True]
all(l1) # 数据集中所有的元素对应布尔值为True返回值为True
any(l1) # 数据集任意一个元素对应布尔值为True返回值为True
# 3.bin() oct() hex()
bin() #将十进制转换成二进制
oct() #将十进制转换成八进制
hex() #将十进制转换成十六进制
# 4.bytes() 类型转换
s = 'hello world!'
print(bytes(s,'utf8')) # 其作用与encoding一致
'''
可以使用 str与bytes进行类型转换,来代替encoding与decoding进行编码与解码
'''
# 5.callable() 判断调用对象是否可以加括号调用
name = 'jason'
def index:pass
print(callable(name))  # False
print(callable(index))  # True
# 6.char() ord() 字符与数字的转换
print(chr(65))  # A    将数字依据ASCII码转成字符
print(ord('A'))  # 65    将字符依据ASCII码转成数字
# 7.dir() 返回数据类型可以调用的方法
print(dir('s'))  # 将字符类型数据可调用方法打印

# 8.divmod()  可用于网页分页制作  
print(divmod(250,25))  # (10, 0)  第一个参数是整除部分 第二个参数是余数部分

分页函数
def get_page_num(total_num,page_num):  
    more,others = divmod(total_num, page_num)
    if others:
        more += 1
    print('需要%s页'%more)
get_page_num(500,20)
>>>需要25# 9.enumerate() 枚举
方法一:常规方法
方法二:enumerate
name_list = ['jason', 'kevin', 'oscar', 'tony']
1.for name in name_list:
     print(name)
2.for i,j in enumerate(name_list,start=1):
     print(i,j)  #控制起始技术,可不写。默认起始0
>>>1 jason
>>>2 kevin
>>>3 oscar
>>>4 tony

# 10.eval() exec() 识别字符串中的代码
res = """
for i in range(10):
    print(i)
"""
eval(res)  # 只能识别简单逻辑的python代码,否则报错
exec(res)  # 能够识别具有与一定逻辑的python代码

posted @   名字只需六字  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示