Python | Comprehensions推导式

推导式是python的一个特性,可以让你很方便的生成一些数据
推导式在python中主要有以下三种应用

  • list 推导

>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

加上一个条件,只要偶数

>>> [i for i in range(20) if i % 2 == 0]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

将两个列表组合成一个

>>> nums = [1, 2, 3, 4]
>>> fruit = ["Apples", "Peaches", "Pears", "Bananas"]
>>> [(i, f) for i in nums for f in fruit]
[(1, 'Apples'), (1, 'Peaches'), (1, 'Pears'), (1, 'Bananas'),
 (2, 'Apples'), (2, 'Peaches'), (2, 'Pears'), (2, 'Bananas'),
 (3, 'Apples'), (3, 'Peaches'), (3, 'Pears'), (3, 'Bananas'),
 (4, 'Apples'), (4, 'Peaches'), (4, 'Pears'), (4, 'Bananas')]

同理,可以加上筛选条件

>>> [(i, f) for i in nums for f in fruit if f[0] == "P"]
[(1, 'Peaches'), (1, 'Pears'),
 (2, 'Peaches'), (2, 'Pears'),
 (3, 'Peaches'), (3, 'Pears'),
 (4, 'Peaches'), (4, 'Pears')]

PS:如果把这里把 [ ] 改成 (),生成的则是generator

>>> g = (i for i in range(10))
>>> type(g)
<class 'generator'>

  • dict 推导

构造一个简单的dict

>>> {i : chr(65+i) for i in range(4)}
{0: 'A', 1: 'B', 2: 'C', 3: 'D'}

交换 key 和 value 的位置

>>> d = {0: 'A', 1: 'B', 2: 'C', 3: 'D'}
>>> {v : k for k, v in d.items()}
{'A': 0, 'B': 1, 'C': 2, 'D': 3}

合并相同key的值

>>> d = {'a': 1, 'b': 2, 'A': 9, 'z': 8}
>>> {k.lower(): d.get(k.lower(), 0) + d.get(k.upper(), 0) for k in d.keys()}
{'a': 10, 'b': 2, 'z': 8}

  • set 推导

>>> {x * x for x in [1, 1, 2]}
{1, 4}

觉得有用的老铁点个赞再走呗!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这两个电影都不算出彩,是异曲同工题材,只是从两个不同角度和不同情景下讨论:该不该复仇?正义还是违法?普通人在动荡中...
    杨二妈阅读 2,833评论 0 0
  • 今天讲讲压力式传感器,每天研究一类传感器已经是第4类了,要全部写完还需要几天。不过今天写的这货的结构和原理算是这两...
    李渡阅读 10,148评论 0 1
  • 体验入:今日进厂台次不多,维修台次不多,车多,车少检查必须到位,避免客户车辆在路上抛锚! 找核心:细心检查! 转身...
    命运我手中明天会更好阅读 1,135评论 0 0

友情链接更多精彩内容