匿名与内置函数剂三元式

三元表达式

'''
使用的方式:二选一的时候 推荐使用三元表达式
'''
def index(a, b):
    if a > b:
        return a
    else:
        return b
res = a if a > b else b
"""
三元表达式
    值1 if 条件 else 值2
条件如果成立则使用值1(if前面的数据)
条件如果不成立则使用值2(else后面的数据)
三元表达式只用于二选一的情况 最好不要嵌套使用(语法不简洁)
"""
# 写一个电影系统 需要决定电影是否收费
is_change = input('是否收费>>>:').strip()
is_free = '收费' if is_change == 'y' else '免费'

各种生成式

1.name_list = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
'''需求:将列表中所有的人名后面加上_DSB'''
new_list = []
for name in name_list:
    res = name + '_DSB'
    new_list.append(res)
print(new_list)
res = [name+'_SB' for name in name_list if name == 'jason']
print(res)
res = [name+'_SB' for name in name_list if name != 'jason']
print(res)
'''列表生成式中值允许出现for和if 不能出现else 因为会产生歧义(for和if都能结合else)'''

2.字典生成方式
l1 = ['name', 'age','pwd' ]
l2 = ['bob', 18, 123]
# 需求:将上述两个列表分别制作成字典的键值
new_dict = {}
for i in range(len(l1)):
    new_dict[l1[i]] = l2[i]
print(new_dict)
# 简便方式
res = {l1:l2 for i in range(len(l1))}
print(res)
3.集合生成方式
res = {i for i in range(10)}
print(res, type(res))
res = {i for i in range(10) if i != 2}
print(res, type(res))
"""没有元组生成式 依据上述写法得到的时候后续我们要学习的知识:迭代器"""

匿名函数

# 没有名字的函数
要和其他函数一起使用
定义:lambda x:x+2
"""
lambda 形参:返回值
	α β γ
如果用普通函数来表示
def index(x):
    return x + 2
"""
# max:统计最大值
l1 = [11,32,41,22,13,66,54,78,96,34,54,99,35]
max(l1) # 获取最大值
info = {
    'Aason':9999999,
    'Jacob':123,
    'zark':1000,
    'berk':33
}
print(max(info, key=lambda key:info[key]))
'''
max底层可以看成是for循环依次比较 针对字典默认只能获取到k
获取到k之后如果是字符串的英文字母 则会按照ASCII码表转成数字比较
    A~Z:65-90
    a~z:97-122
'''

常见重要内置函数

1.map 眏射
l1 = [11, 22, 33, 44, 55]
# 需求:元素全部自增11
def index(n):
    return n+11
res = map(index, l1)
res = map(lambda x: x + 11, l1)

2.zip 拉链
l1 = [11, 22, 33, 44, 55]
l2 = ['bob', 'jj', 'dij', 'dav', 'fkc']
# 需求:将两个列表中的元素一一对应成对即可
res = zip(l1,l2)
print(list(res)) # [(11, 'bob'), (22, 'jj'), (33, 'dij'), (44, 'dav'), (55, 'fkc')]
'''zip可以整合多个数据集'''
l3 = [12, 13, 14, 55]
l4 = [99, 88, 55]
res = zip(l1,l2,l3,l4)
'''zip可以整合多个数据集 如果数据集之间个数不一致 那么依据短的'''

3.filter 过滤
l1 = [11, 22, 33, 44, 55]
'''需求:筛选出大于30的元素'''
res = filter(lambda x:x>30, l1)
print(list(res))

4.reduce 归总
from functools import reduce
l1 = [11, 22, 33, 44, 55]
res = reduce(lambda x, y:x +y, l1,100)
'''求和,列表内总和加l1后面的和'''

常见的内置函数

1.abs()  获取绝对值(不考虑正负号)
print(abs(-123))
print(abs(123))

2.all()与any()
l1 = [0, 0, 1, 0, True]
print(all(l1))  # False  数据集中必须所有的元素对应的布尔值为True返回的结果才是True
print(any(l1))  # True   数据集中只要所有的元素对应的布尔值有一个为True 返回的结果就是True

3.bin() oct() hex()  产生对应的进制数
print(bin(100))
print(oct(100))
print(hex(100))

4.bytes()  类型转换
s = '你好啊 hello world!'
print(s.encode('utf8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
print(bytes(s, 'utf8'))  # b'\xe4\xbd\xa0\xe5\xa5\xbd\xe5\x95\x8a hello world!'
'''针对编码解码 可以使用关键字encode与decode  也可以使用bytes和str'''
s1 = '天黑了 抓紧进屋吧!!!'
# 编码
res = bytes(s1, 'utf8')
print(res)
# 解码
res1 = str(res, 'utf8')
print(res1)

5.callable()  判断当前对象是否可以加括号调用
name = 'jason'
def index():pass
print(callable(name))  # False  变量名不能加括号调用
print(callable(index))  # True  函数名可以加括号调用

6.chr()、ord()  字符与数字的对应转换
print(chr(65))  # A  根据数字转字符  依据ASCII码
print(ord('A'))  # 65  根据字符转数字  依据ASCII码

7.dir()  返回数据类型可以调用的内置方法(查看对象内部可调用的属性)
print(dir(123))
print(dir('jason'))

8.divmod()
print(divmod(251,25))  # (10, 1)  第一个参数是整数部分 第二个是余数部分
def get_page_num(total_num,page_num):  # 后面django分页器使用
    more,others = divmod(total_num, page_num)
    if others:
        more += 1
    print('需要%s页'%more)
get_page_num(1000,30)

9.enumerate()  枚举
name_list = ['jason', 'kevin', 'oscar', 'tony']
for i,j in enumerate(name_list,start=1):
    print(i,j)  # i类似于是计数 默认从0开始 还可以控制起始位置
    
10.eval() exec()  识别字符串中的python代码  使用频率很低
# eval(res)  只能识别简单逻辑的python代码
# exec(res)  能够识别具有与一定逻辑的python代码

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