Python 列表生成式(List Comprehensions)

时间:2022-04-26
本文章向大家介绍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