Python语言 ---推导式
小标 2018-10-09 来源 : 阅读 894 评论 0

摘要:本文主要向大家介绍了Python语言 ---推导式,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言 ---推导式,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

Python的推导式

python的推到式(列表推导式,字典推导式,集合推导式)
推导式:comprehensions(解析式)
是python中独特的特性,推到式是可以从一个数据结构序列构件另外一个数据

    三种推导式    1、列表推导式    2、字典推导式    3、集合推导式

·列表推导式

1、使用[]生成一个列表list
基本格式

v(变量) = [每一个元素的运算法则 for 变量 in 可迭代对象 if布尔表达式]

1、运算法则:表达式  / 函数(有返回值)

2、for 变量 in 刷卡迭代对象:每一次迭代出的元素,赋值给变量
列表中的元素——->表达式--->元素

    l=[i+1 for i in range(10)]    print l#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

3、if 布尔表达式:根据条件过虑值
注意:if 判断可以省略不做任何判断,其他部分不能省略

    l=[i for i in range(10) if i%2==0]    print l#[0, 2, 4, 6, 8]


2、使用()生成generator生成器

generator:生成器

l=(fun(i) for i in range(31) if i%3==0)print l#<generator object <genexpr> at 0x052DAA08>print type(l)#<type 'generator'>生成器

生成器不会把结果保存在一个序列中,而是保存生成器的状态,在每一次
迭代的时候,返回一个值,直到遇到stopiteration异常结束。

列表推导式与生成器的区别:

1、通过推导式直接创建所有的元素,占用空间大2、生成器相当于一个工具,创建列表的工具,更加省空间,用多少创建多少,只要不要超过上限

特点

1、生成器本质也是一个可迭代对象(利用for循环进行遍历,for循环会调用next()方法)2、next():调用n次next的方法,创建n个元素l2=(i for i in range(100))print l2#<generator object <genexpr> at 0x052DAA08>l2.next()#0l2.next()#1l2.next()#2

字典推导式:

字典推导式和列表推导式使用方法类似
创建形式:

变量={ 键:值 for 变量 in 可迭代对象 if 布尔表达式}

键值:可以是表达式,也可以是一个函数(有返回值的函数)

d={str(i):i**2 for i in range(10) if i%3==0}d#{'9': 81, '0': 0, '3': 9, '6': 36}#给定一个字典d1={'one':1,'two':2,'three':3}请转换字典中的键与值d1 #{1: 'one', 2: 'two', 3: 'three'}        for i in d1.iteritems():    #iteritems()返回键值对 ,如果直接在d1中可迭代,只是返回键。          print i#返回('three', 3) ('two', 2) ('one', 1)    for key,value in d1.iteritems():           print key,value#返回   three 3 two 2  one 1        d1={value:key for key,value in d1.iteritems()}        print d1#{1: 'one', 2: 'two', 3: 'three'}

集合推导式
定义形式:

     变量={ 表达式 for 变量 in 可迭代对象 if 布尔表达式}

表达式:可以是普通表达式,也可以是一个函数(带有返回值的函数)

s={ i for i in range(10)if i%2==0}print s#set([0, 8, 2, 4, 6])


本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程