(windows) Python 2.7 学习笔记 十八 高级特性 – 列表生成式

列表生成式

列表生成式即 List Comprehensions,是 Python 内置的非常简单却强大的可以用来创建 List 的生成式。

举个例子,要生成 list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 可以用 range(1, 11)

但如果要生成 [1×1, 2×2, 3×3, …, 10×10] 怎么做?方法一是循环:

但是循环太繁琐了,而列表生成式则可以用一行语句代替循环生成上面的 list

写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把 list 创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

for 循环后面还可以加上 if 判断,这样我们就可以筛选出仅偶数的平方:

还可以使用两层循环,可以生成全排列:

三层和三层以上的循环就很少用到了。

运用列表生成式,可以写出非常简洁的代码。例如,列出当前目录下的所有文件和目录名,可以通过一行代码实现:(中文目录显示乱码)

解决参考文章:https://blog.csdn.net/u014465934/article/details/73065003

for 循环其实可以同时使用两个甚至多个变量,比如 dict 的iteritems() 可以同时迭代 keyvalue

因此,列表生成式也可以使用两个变量来生成 list

最后把一个 list 中所有的字符串变成小写:

运用列表生成式,可以快速生成 list,可以通过一个 list 推导出另一个 list,而代码却十分简洁。

思考:如果 list 中既包含字符串,又包含整数,由于非字符串类型没有 lower() 方法,所以列表生成式会报错:

使用内建的 isinstance 函数可以判断一个变量是不是字符串:

修改列表生成式,通过添加 if 语句保证列表生成式能正确地执行。

发表评论

zh_CNChinese
zh_CNChinese