例如,我想去除列表中所有的偶数项,保留奇数项,可以这么写:
4.2. 带有for嵌套
在复杂一点的列表推导式中,可以嵌套有多个for语句。按照从左至右的顺序,分别是外层循环到内层循环。
例如:
4.3. 既有if语句又有for嵌套
列表推导式可以带任意数量的嵌套for循环,并且每一个for循环后面都有可选的if语句。
通用语法:
例如,下面的代码输出了0~4之间的偶数和奇数的组合。
等价于下面的一般 for 循环:
4.4. 列表推导式生成矩阵
生成矩阵的方式有多种,例如手动赋值、一般for循环,还有就是列表推导式。如果我们要用列表推导式生成下面的矩阵,可以怎么写?
一种方法是:
矩阵的列数少时可以使用这种方法。
如果矩阵的列数较多,我们可以使用另外一种方式:在循环变量的表达式中使用列表推导式。
具体代码如下:
与之前带for嵌套的语法不同,这个例子中,实际使用的是最基本的[expression for x in L]语法,只有一个for语句。
复杂的地方在于前面的变量表达式expression不再是简单的变量运算,而是一个列表推导式,在这个例子中就是[y for y in range(x, x+3)]。
内层的列表推导式返回一个行向量,而这些行向量经由外层的列表推导式,最终形成一个二维列表,也就是我们想要的矩阵。
当然,在实际的应用中不能单纯追求代码的简洁,还要考虑到代码的可读性和维护成本。
如果代码变得过于复杂,不易于理解,我们宁可多写几行代码来增加它的可读性。
- 生成器表达式
生成器表达式与列表推导式的语法相同,区别在于生成器表达式的外面使用圆括号,而列表推导式使用方括号。
- 集合推导式和字典推导式
注意:集合推导式和字典推导式只有在Python2.7以及之后的版本中才有,Python2.7之前的版本不支持这两种推导式。
集合推导式的语法与列表推导式相同,只需要把外面的方括号改成花括号即可。
例如,我们可以通过以下方式来生成一个集合:
字典推导式的外面也是使用花括号,不过花括号的内部需要包含键值两部分。
在值不重复的情况下,我们可以通过字典推导式快速交换键值对:
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!