Python 列表生成式(List Comprehensions)


列表生成式(List Comprehensions),顾名思义,即为生成列表的表达式。列表生成式是Python内置的高级特性,简单却功能强大,充分体现了Python的简洁美。

格式:

[列表形式 生成规则] 
#即一个列表生成式由2个表达式组成

列表生成式(List Comprehensions)


生成规则只要符合Python的语法即可,所以非常灵活,大家可以举一反三,一次类推。

下面举几个例子供大家学习,能使用到什么水平要看个人积累了。

#生成从1到10的list
>>>[x for x in (range(1,11))]   #等价于list(range(1,11)) 
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#生成从1开始的平方数
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>>

#使用两个变量生成list
>>> dict = {
    'a':1, 'b':2, 'c':3}
>>> [k + '=' + str(v) for k,v in dict.items()]
['a=1', 'b=2', 'c=3']  #注意结果是包含3个字符串的列表

#还可以在生成式和生成规则式中做一些符合语法的简单处理
>>> s = 'steve wang'
>>> [x.upper() for x in s if x != ' ']
['S', 'T', 'E', 'V', 'E', 'W', 'A', 'N', 'G']


需要注意的地方在于,[]里只能有2个表表达式,第一个表达式表示生成式的形式,第二个表达式表示生成规则,否则会报语法错误。

#可以使用双层for循环 因为双层for循环在Python中可以写成一个表达式
>>> [(a, b) for a in range(0,4) for b in range(0,4)]
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2), (3, 3)]
#这是一个数学上的全排列

补充资料:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431779637539089fd627094a43a8a7c77e6102e3a811000

你可能感兴趣的:(python,python,list,列表生成式)