我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

本文说一下python的一个高级语法:推导式。其实就是用一种特殊写法获得一系列的数据集合的功能。目前来说,似乎只在python这边苏南大叔看到了这样的功能。那么,其它高级语言里面,是不是也有这样类似的写法呢?

苏南大叔:python代码,如何利用推导式获得可用数据集? - 列表推导式
python代码,如何利用推导式获得可用数据集?(图3-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文主要介绍推导式,包括:列表(list)推导式,字典(dict)推导式,集合(set)推导式。当然,还有其它的推导式使用方式,但不是本文中所讨论的内容。本文测试环境:win10python@3.6.8

苏南大叔个人理解着:就是用表达式来定义相关类似数组的集合,存在着一个隐式的运算过程。

基本情况

列表推导式的基本格式,如下:

_list = [ expression for_loop_expression if condition ]
_set  = { expression for_loop_expression if condition }
_tuple= tuple(( expression for_loop_expression if condition ))
_dict = { key_expr:value_expr for_loop_expression if condition }
  • expression函数或者表达式,用于加工集合中的某个成员。
  • for_loop_expression,用于产生集合成员的初始值。
  • if condition,用于数据筛选。如果为真,则从for流程转到expression流程。

测试代码一

测试代码如下:

_test = range(0, 10)
def fn(i):
    return i*i
_list = [i*i for i in _test if i % 2 == 0]
_set = {fn(i) for i in _test }
_tuple = tuple((i*i for i in _test if i % 2 ==0))
_map = map(fn,_test) 
  • 其中的列表list和集合set的推导式,中规中矩。
  • 对于tuple元组,使用()表述得到的是个生成式,然后使用了强转。
  • 对于map类型,这个可能不叫做推导式了,但是表现形式上和推导式非常类似。

苏南大叔:python代码,如何利用推导式获得可用数据集? - 测试代码1
python代码,如何利用推导式获得可用数据集?(图3-2)

如果这些代码使用普通的方式来书写的话,可能是下面的这个样子:

_list = []
for i in _test:
    if i % 2 == 0:
        _list.append(i)
print(_list)

测试代码二

下面的是dict字典推导式的例子:

_info = {'sunan': {'grade': "A",},'sunan2': {'grade': "B",}}
_dict = {o:d for o,d in _info.items() if d['grade'] == "A"}
print(_dict, type(_dict))

苏南大叔:python代码,如何利用推导式获得可用数据集? - 测试代码2
python代码,如何利用推导式获得可用数据集?(图3-3)

相关文章

综述

推导式是一种比较先进的写法,用常见的方式也是可以实现相似功能的。更多python的经验文章,请点击下面的链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python