前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 列表生成式(List Comprehensions)

Python 列表生成式(List Comprehensions)

作者头像
Steve Wang
发布2018-02-05 17:20:45
6420
发布2018-02-05 17:20:45
举报
文章被收录于专栏:从流域到海域

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

代码语言:javascript
复制
[列表形式 生成规则] 
#即一个列表生成式由2个表达式组成

列表生成式(List Comprehensions)

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

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

代码语言:javascript
复制
#生成从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个表表达式,第一个表达式表示生成式的形式,第二个表达式表示生成规则,否则会报语法错误。

代码语言:javascript
复制
#可以使用双层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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月13日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 列表生成式(List Comprehensions)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档