一、python基础
1. 列表推导式和匿名函数
在生成一个数字序列的时候,在Python
中可以如下写出:
![b5ad32f0af80973abd887a0b51e84043.png](https://i-blog.csdnimg.cn/blog_migrate/74f57d9b9f480e061bead28c1e76eb81.png)
但是这样的方式过于复杂,因此可以利用列表推导式简化写法。
(1)[ * for i in * ]
这个就是列表推导式写法, 第一个* 表示映射函数,函数中的 i 为后面的 i 指代的内容,第二个 * 表示迭代对象
- 所以上述生成数字序列的过程又可以用以下简化写法
![388b8bcf8055d24601ed2482a7609d15.png](https://i-blog.csdnimg.cn/blog_migrate/47ea1587f6ae124dd035425752a8c4df.png)
(2)定义一个函数的过程,在代码量庞大的时候显得累赘,不利于代码的可读性,所以当一个函数只在此过程使用,其他地方不用调用的时候,可以使用匿名函数,省去定义的过程,既简洁,又可读,且节省时间。
![9b3dc386c91dbe78c34e7cb7c89b899a.png](https://i-blog.csdnimg.cn/blog_migrate/9a2daa62e92525a4a970a8c102e3686f.png)
(3)对于上述的这种列表推导式的匿名函数映射,Python
中提供了map
函数来完成,它返回的是一个map
对象,需要通过list
转为列表:
![fe363333268da5fee3680793b02e4e33.png](https://i-blog.csdnimg.cn/blog_migrate/1771aeb71de2259b87fa08e03f498b5b.png)
注意:对于多个输入值的函数映射,可以通过追加迭代对象实现:
![ed13c068303028483378e88300422118.png](https://i-blog.csdnimg.cn/blog_migrate/b4d7481c6c57ea003d73c058be3823d6.png)
【补充】
① 列表表达式还支持多层嵌套,如下面的例子中第一个for
为外层循环,第二个为内层循环:
![ff26790f8dc8b404cb9f3113cf3d67fe.png](https://i-blog.csdnimg.cn/blog_migrate/5187cb8f91a5f59f382a839adcd094da.png)
上述列表推导式中,第一个for为外层循环,第二个for为内层循环,由此可以得出列表推导式中,for循环越早出现,就是越外层的循环。我们也可以将列表推导式重新写成嵌套循环的格式,对比看一下。
![c4ca5e300bf33e27c2037b93ed961976.png](https://i-blog.csdnimg.cn/blog_migrate/ee09ce12d8e395a7e15f2619bb546f35.png)
由此类推,3层嵌套循环和4层嵌套循环的列表推导式写法:
· 3层嵌套循环
![0b4ca0340600b59218907f5434916b28.png](https://i-blog.csdnimg.cn/blog_migrate/3c0477ab0b4a960920061f6fcafebb1a.jpeg)
· 4层嵌套循环
![375db6802e0c2be3a62e8f5fff564a73.png](https://i-blog.csdnimg.cn/blog_migrate/97e1cbb3567e53c602ff8cde046048fe.png)
②语法糖:带有if
选择的条件赋值,其形式为value=a if condition else b
:
![c17c6bc065280ef8df8636908fcb6364.png](https://i-blog.csdnimg.cn/blog_migrate/ec2a488038f8f8fa978b4527da9907cb.png)
条件赋值结合列表推导式生成列表
![5425e3ede86242b4f51541f2e871ebbb.png](https://i-blog.csdnimg.cn/blog_migrate/2c6464e26964943c59b233bb187f77a0.png)
2. zip对象与enumerate方法
2.1 zip函数
zip函数能够把多个可迭代对象打包成一个元组构成的可迭代对象,它返回了一个zip
对象,通过tuple,list
可以得到相应的打包结果:
![dee059639071cf9f1bb271be014b34df.png](https://i-blog.csdnimg.cn/blog_migrate/ce20c158a7a39d472e9378dd8dc49ad2.png)
2.2 enumerate函数
enumerate
是一种特殊的打包,它可以在迭代时绑定迭代元素的遍历序号:
![de2a4cf862d07d6c4c40f23e3e00e3b4.png](https://i-blog.csdnimg.cn/blog_migrate/20c0a0be706e7004a05d4280ea69bfd3.png)
当需要对两个列表建立字典映射时,可以利用zip
对象:
![175634efdd0091e46576f26f1278621e.png](https://i-blog.csdnimg.cn/blog_migrate/a5e9bce7c3f767b795f65c94c34f81a8.png)
dict函数将zip中的第一个列表元素作为字典的键,第二个列表元素作为字典的值
2.3 解压缩函数
![ddc77a40688481c5c5560bde3b789b86.png](https://i-blog.csdnimg.cn/blog_migrate/c7db3a3f9db30a34ddb048a29edcf2bc.png)
二、numpy基础
1. np数组的构造
(1) 基于array构造
![b7077ba60c52307cce3043efc11ddc1d.png](https://i-blog.csdnimg.cn/blog_migrate/f9956e44854de38802a3f064e9ab4e32.png)
(2)等差序列:np.linspace,np.arange
np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的间隔内返回均匀间隔的数字。返回num均匀分布的样本,在[start, stop]。
![fb2e26812616ae7fc453c26248676338.png](https://i-blog.csdnimg.cn/blog_migrate/c879db6803148be3ff694bfa31b40aaa.png)
np.arange([start, ]stop, [step, ]dtype=None)
- start:可忽略不写,默认从0开始;起始值
- stop:结束值;生成的元素不包括结束值
- step:可忽略不写,默认步长为1&#x