内容概要
- 三元表达式
- 各种生成式
- 匿名函数
- 常见重要的内置函数
- 补充常见的内置函数
---------------------------------------------------------------------------------------------
三元表达式
三元表达式:一般的在二选一的时候通常我们会想到使用if...else来完成需求,但三元表达式才是最好的,相比于前者三元表达式结构更加简洁
| ''' |
| 三元表达式的语法结构: |
| 值1 if 条件 else 值2 |
| 如果if条件成立则立即使用if前的值1 |
| 如果if条件成立则立即使用else后的值2 |
| ''' |
使用案例
| |
| num = input('请输入数字>>>:').strip() |
| num = int(num) |
| |
| |
| |
| |
| |
| |
| res = '小于10' if num < 10 else '不小于10' |
| print(res) |
| |
| |
| res = '小于10' if num < 10 else (a = '等于10' if num == 10 else '大于10') |
| ''' |
| 三元表达式只用于二选一的情况 最好不要嵌套使用(语法不简洁) |
| ''' |
各种生成式
- 列表生成式
| '''需求给指定用户tom绑定VIP''' |
| |
| name_list = ['jason', 'jimi', 'herr', 'tom', 'jerry'] |
| |
| res = [name+'_VIP' for name in name_list if name == 'tom'] |
| print(res) |
| |
| res = [name+'_SB' for name in name_list if name != 'tom'] |
| print(res) |
| |
- 字典生成式
| |
| '''需求:将以下两个列表分别制作成字典的键值''' |
| name_lt = ['tom', 'jimi', 'aili'] |
| age_lt = [20, 18, 24] |
| |
| '方式1 其他方法' |
| |
| new_dict = {} |
| |
| for i in range(len(name_lt)): |
| |
| new_dict[name_lt[i]] = age_lt[i] |
| print(new_dict) |
| |
| '字典生成式' |
| |
| res = {name_lt[i]: age_lt[i] for i in range(len(name_lt))} |
| print(res) |
- 集合生成式
| res = {i for i in range(10)} |
| print(res, type(res)) |
| |
| |
| res = {i for i in range(10) if i != 5} |
| print(res, type(res)) |
| |
匿名函数
匿名函数的意思就是没有函数名,需要于其他函数一起结合使用
匿名函数的定义
| |
| """ |
| 结构: |
| lambda 形参:返回值 |
| |
| 如果用普通函数来表示 |
| def index(x): |
| return x + 2 |
| """ |
| |
| |
| info = { |
| 'Tom': 100000, |
| 'jimi': 10000, |
| 'aili': 1000, |
| 'berry': 100 |
| } |
| |
| print(max(info)) |
| ''' |
| max底层可以看成是for循环依次比较 针对字典默认只能获取到k |
| 获取到k之后如果是字符串的英文字母 则会按照ASCII码表转成数字比较 |
| A~Z:65-90 |
| a~z:97-122 |
| ''' |
| |
| |
| |
| |
| |
| |
| print(max(info, key=lambda key:info[key])) |
常见重要内置函数
1.map映射
| l1 = [11, 22, 33, 44, 55] |
| |
| def index(n): |
| return n + 10 |
| res = map(index,l1) |
| print(res) |
| print(list(res)) |
| res = map(lambda x: x + 10, l1) |
| print(list(res)) |
2.zip拉链
| '''需求:将两个列表中的元素一一对应成对即可''' |
| l1 = [11, 22, 33, 44] |
| l2 = ['jason','kevin','tony','oscar'] |
| |
| res = zip(l1,l2) |
| print(res) |
| print(list(res)) |
| |
| '''zip可以整合多个数据集 如果数据集之间个数不一致 那么依据短的''' |
| l1 = [1000, 100, 200, 2000, 300] |
| l2 = ['Tom', 'aili'] |
| res = zip(l1,l2) |
| print(list(res)) |
3.filter过滤
| '''需求:筛选出大于30的元素''' |
| l1 = [11, 22, 33, 44, 55, 66] |
| |
| def index(x): |
| return x > 30 |
| res = filter(index,l1) |
| print(list(res)) |
| |
| res = filter(lambda x:x>30, l1) |
| print(list(res)) |
4.reduce归总
| '''需求:讲列表中所有的元素相加''' |
| l1 = [11, 22, 33] |
| |
| res = reduce(lambda x, y: x + y, l1) |
| print(res) |
| res = reduce(lambda x, y: x + y, l1, 100) |
| print(res) |
常见内置函数
1.abs()
| '''取绝对值''' |
| print(abs(-10)) |
| print(abs(+10)) |
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()
| '''类型转换''' |
| |
| |
| |
| '''针对编码解码 可以使用关键字encode与decode 也可以使用bytes和str''' |
| |
| |
| |
| |
| |
| |
| |
5.callable()
| '''判断当前对象是否可以加括号调用''' |
| name = 'jason' |
| def index(): |
| pass |
| print(callable(name)) |
| print(callable(index)) |
6.chr()、ord()
| '''字符与数字的对应转换''' |
| print(chr(65)) |
| print(ord('A')) |
7.dir()
| '''返回数据类型可以调用的内置方法(查看对象内部可调用的属性)''' |
| print(dir(123)) |
| print(dir('jason')) |
8.divmod()
| """ |
| 可以使用在网站的分页制作上 |
| 问 |
| 总共250条数据 每页展示25条 需要多少页 10页 |
| 总共251条数据 每页展示25条 需要多少页 11页 |
| 总共249条数据 每页展示25条 需要多少页 10页 |
| """ |
| print(divmod(250,25)) |
| 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(1000,30) |
9.enumerate()
| '''枚举''' |
| name_list = ['jason', 'kevin', 'oscar', 'tony'] |
| for name in name_list: |
| print(name) |
| |
| for i,j in enumerate(name_list): |
| print(i,j) |
| |
| for i,j in enumerate(name_list,start=1): |
| print(i,j) |
10.eval() exec()
| '''识别字符串中的python代码''' |
| print('print("有点饿了")') |
| eval('print("有点饿了111")') |
| exec('print("有点饿了222")') |
| |
| res = """ |
| for i in range(10): |
| print(i) |
| """ |
| |
| exec(res) |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人