**列表生成式( List Comprehensions )** 列表生成式是 Python 内置的简单而强大的可以用来创建list的生成式。 列表生成式可以让我们写出非常简洁优雅的代码。 我们要生成简单的列表如 : [0,1,2,3,4] 可以使用 ~~~ >>> list(range(5)) #list(range(5)) 等价于 list(range(0,5)) [0, 1, 2, 3, 4] ~~~ 如果要生成复杂点的列表如 : [ 0+0 , 1+1 , 2+2 , 3+3 , 4+4 ] ,可能你就想到使用循环再来做了 ~~~ #!/usr/bin/env python3 # -*- coding:utf-8 -*- l = [] for i in range(5): l.append(i+i) print(l) ~~~ 但是,在 Python 中就不需要这么麻烦,如下 ~~~ >>> [i+i for i in range(5)] [0, 2, 4, 6, 8] ~~~ 通过比较使用循环和列表生成式比较,不难发现,列表生成式要远远比循环做的简洁。 **列表生成式的两层循环** 实现字符串 '123' 与字符串 '456' 的全排列 ~~~ >>> [ x+y for x in '123' for y in '456'] ['14', '15', '16', '24', '25', '26', '34', '35', '36'] ~~~ **列表生成式中的判断** 将列表中元素的大写字母全部转成小写字母 ~~~ >>> _list = ['Airvip',20,'Boy'] >>> [ s.lower() if isinstance(s,str) else s for s in _list ] ['airvip', 20, 'boy'] ~~~ 注意:列表生成式中没有 else 的话 if 判断要放在 for 循环后面 ~~~ >>> [ x for x in '123' if x != '2'] ['1', '3'] ~~~ **列表生成式中迭代字典** ~~~ >>> dict = {'name':'airvip','sex':'man','age':24} >>> [ x + ':' + y if isinstance(x,str) and isinstance(y,str) else str(x) +':'+ str(y) for x,y in dict.items()] ['sex:man', 'name:airvip', 'age:24'] ~~~