写此篇有以下几个原因:
1,我发现我自己学python这么久了(今年2月份开始),也不知道有这种进阶的语法,只是对其中的某些部分有点点的了解。
2,我是偶然间看到python技能树,原先是不知道CSDN里面有这个的。
3,最近做的项目涉及了yolov3,我也感觉我自己缺了很多东西,项目实战也是更新到了《Opencv项目实战:07 人脸识别和考勤系统》,越来越难了,感觉只学习了opencv的我有点不够用了,所以我决定延后一些时间,我再去补一补Opencv和一些算法知识。
4,马上要开学了,我要转战机器学习了,网课的资源也找好了,刚好连写了七天的博客,所以我不准备中止停下,结合着一边学习技能树里面的知识,一边写博客。中间我会掺杂着我在看网课时学习的知识。
5,我发现里面有些东西用处其实不大,我都没有怎么用过,所以我这是简略的版本,只记录我觉得平时可能用的到得知识。
目录
for 循环写法
- my_list = [1,2,3]
- new_list = []
- for i in my_list:
- new_list.append(i*2)
-
- print(new_list)
-
- #运行台#
- [2, 4, 6]
列表推导式写法
- my_list = [1,2,3]
- nn_list = [i*2 for i in my_list]
- print(nn_list)
-
- #运行台#
- [2, 4, 6]
优化两层for循环
- nn_list = [(x,y) for x in range(3) for y in range(3) ]
- print(nn_list)
-
- #运行台#
- [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
它当然可以优化更多的层数,但我并不建议你这样做,两层以上后它的实用性不高,可读性也不高,如果真的用到两层以上的循环,我觉得还是老老实实的敲吧。
支持嵌套
- my_var = [y*4 for y in [x*2 for x in range(3)]]
- print(my_var)
-
- #运行台#
- [0, 8, 16]
用于过滤数据
列表表达式,可以将列表中满足条件表达式的值进行筛选过滤,获取目标数据。
- my_list = [1, 2, 3]
- new_list = [item for item in my_list if item > 1]
- print(new_list)
-
- #运行台#
- [2, 3]
- my_dict = {key: value for key in range(3) for value in range(2)}
- print(my_dict)
-
- #运行台#
- {0: 1, 1: 1, 2: 1}
此时需要注意的是字典中不能出现同名的 key,第二次出现就把第一个值覆盖掉了,所以得到的 value 都是 1。
最常见的还是下述的代码,遍历一个具有键值关系的可迭代对象
- my_tuple_list = [('name', '橡皮擦'), ('age', 18),('class', 'no1'), ('like', 'python')]
- my_dict = {key: value for key, value in my_tuple_list}
- print(my_dict)
-
- #运行台#
- {'name': '橡皮擦', 'age': 18, 'class': 'no1', 'like': 'python'}
我觉得较为用于的是三元表达式与 lambda的结合,它能让代码更加的简洁,单独的三元表达式,我觉得就用条件语句足够了。
案例如下:
实现——声明一个函数,返回较大值
- def max(a, b):
- if a > b:
- max = a
- else:
- max = b
- return max
-
- c = max(5, 6)
- print(c)
由于上述代码非常简单,可以直接使用 lambda 匿名函数实现。
- max = lambda a, b: a if a > b else b
- c = max(10, 15)
- print(c)
直接展示用法,如果使用,肯定也是开发人员使用。
- a=int(input())
- def overage18(age):
- assert age >= 18, "对不起未满18岁,无法进行游戏"
- print("享受欢乐游戏时光")
-
- if __name__ == '__main__':
- overage18(a)
-
- #运行台#
- 15
- AssertionError: 对不起未满18岁,无法进行游戏
-
- 18
- 享受欢乐游戏时光
断言其主要为调试辅助而生,为的是程序自检,并不是为了处理错误,程序 BUG 还是需要依赖 try… except 解决。并不是很推荐使用。目前来看,我只需做个了解,即可。
具体请参照列表推导式-进阶语法-CSDNPython入门技能树
本篇源于自己的梳理,属于是将我自己认为用的上的知识点的总结。