python-生成式的基本使用
生成式是python中的一种高级玩法,起码看起来显得要高级一点。它可以使用简单的一行代码实现列表、字典等数据类型的创建或数据类型的转换等任务。另外,它和生成器还有些许关联。
列表生成式
列表生成式即生成列表的生成式,写法简单而优雅,可以将多行代码用一行代码实现,且效率较高。一般用于创建简单的新列表或对过滤出新列表。另外,还可以做数据类型间的转换。
# 方式1
nums = [i for i in range(10) if i%2 == 0] # nums= [0, 2, 4, 6, 8]
nums2 = [i for i in nums if i >5] # num2= [6, 8]
# 方式2
nums = list(i for i in range(1, 5)) # nums = [1, 2, 3, 4]
# 数据类型转换
a = {"name":"jack", "age": 18}
a2 = [key for key in a] # a2 = ['name', 'age']
字典生成式
字典生成式即生成字典的生成式。特殊场合下,可以写出很优美的代码。也分为两种生成方式,一种默认的使用{}
,括号体内使用循环生成。另外配合内置方法的使用,效果很优美。
# 方式1
{k:v for k,v in enumerate(range(1,5))} # {0: 1, 1: 2, 2: 3, 3: 4}
# 方式2
li = [[1,2], (2,3)]
dict(x for x in li) # {1: 2, 2: 3}
dict(zip([1,2], [3,4])) # {1: 3, 2: 4}
集合生成式
# 方式1
a = set(i for i in range(1,5)) # {1,2,3,4}
# 方式2
b = {i for i in range(1,5)} # {1,2,3,4}
元组生成式
元组生成式即生成元组的生成式,按理说可以使用()
,括号内循环的方式生成元组生成式,但是()
被python中的生成器占用,就只剩下一种方式生成元组生成式。
# 方式1
tuple(x for x in range(1,5)) # (1, 2, 3, 4)
# 数据类型转换
nums = [3,4,5,6]
tuple(x for x in nums) # (3, 4, 5, 6)
生成器生成式
使用()
内循环的方式可以生成最简单的生成器,生成器替代列表的使用可以减小内存的消耗。生成器可以通过 next
输出数据,但最后一个后会报错;一般使用for
循环的方式使用生成器。其实,range(10)
本质上就是一个最简单的生成器。
a = (i for i in range(1,5)) # <generator object <genexpr> at 0x0000027B1B5994C8>
print(next(a)) # 1
print(next(a)) # 2
print(next(a)) # 3
print(next(a)) # 4
print(next(a)) # 抛出异常StopIteration
# 可以使for循环的方式避免异常
print([i for i in a]) # [1,2,3,4]
python-生成式的基本使用的更多相关文章
- python生成式
本篇将介绍Python的列表生成式,更多内容请参考:Python列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个 ...
- python 生成式和生成器
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/10/17 21:46 # @Author : lijunjiang # @Fi ...
- python生成式:列表、字典、集合
python的3类生成式: 列表生成式 字典生成式 集合生成式 1.python列表生成式 my_data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] print(&quo ...
- python生成式和生成器
一,生成式和生成器 1,列表生成式 mylist = [ i*i for i in range(3) if i>1 ] print(mylist) 运行结果:[4] 可以发现,快速生成列表的表达 ...
- python 生成式,生成器,迭代器,可迭代
1.生成器就是迭代器2.生成式用[](中括号)包起来,生成器用()(圆括号)包起来3.生成式在使用前已经在内存中存在,生成器只有在使用时才生成4.迭代器是可以用.__next__()不断取出下一值,直 ...
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...
- python【5】-生成式,生成器
一.条件和循环 1. if语句 if <条件判断1>: <执行1> elif <条件判断2>: <执行2> else: <执行4> 例如: ...
- python基础——列表生成式
python基础——列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4 ...
- python学习笔记——列表生成式与生成器
1.列表生成式(List Comprehensions) python中,列表生成式是用来创建列表的,相较于用循环实现更为简洁.举个例子,生成[1*1, 2*2, ... , 10*10],循环用三行 ...
- Python的高级特性之切片、迭代、列表生成式、生成器
切片 切片就是获取一个list.tuple.字符串等的部分元素 l = range(100) #取[0,5)元素 print(l[:5]) #[0, 1, 2, 3, 4] #在[0,99]中每隔10 ...
随机推荐
- [环境搭建]-Web Api搭建到IIS服务器后PUT请求返回HTTP Error 405.0 - Method Not Allowed 解决方法 转摘:http://blog.csdn.net/qiujuer/article/details/23827531
尝试使用微软的Web Api,他的确是一个很有意思的东西. 让我体会到了许多的方便,但是我发现部署到IIS服务器上去了后PUT和Delete请求将返回405. 原因是IIS的默认处理程序默认情况下只允 ...
- ListView鼠标拖
private Point Position = new Point(0, 0); private void treeFileView_ItemDrag(object sender, ItemDrag ...
- MicroPython 的优势
定位的场景 MicroPython 在设计上最初就是为了嵌入式微处理器运行,例如在 nRF51822 (256kB flash + 16kB RAM) 的芯片上也可以运行起来,也有人肾得慌在 STM3 ...
- java 快速开发平台 有代码生成器 springmvc SSM后台框架源码
. 权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限. 按钮权限: 给角色分配按钮权限.2 ...
- ant-design如果按需加载组件
Ant Design React按需加载 Ant Design是阿里巴巴为React做出的组件库,有统一的样式及一致的用户体验 官网地址:https://ant.design 1.安装: npm in ...
- ASE Beta Sprint - backend scrum 4
本次scrum于2019.12.10在sky garden进行,持续10分钟. 参与人: Xin Kang, Zhikai Chen, Lihao Ran, Hao Wang 请假: Ning Jia ...
- 苹果账号需要的邓白氏D-U-N-S编码更新信息最新方法,官方已不受理邮件
公司从上海搬迁到深圳,公司名称相应变更,但之前注册的苹果开发者账号上的名字还是就的,尝试在后台提交更新申请,官方给了邮件,要求邮件提交证明材料,证明材料提交后,苹果又反馈和邓白氏的资料不匹配,要求先修 ...
- 使用BaGet来管理内部Nuget包
有的时候,我们想要制作一些nuget包,供自己内部调用,不想公开出去,那么就需要一个能够集中管理nuget包的服务了,今天我来给大家介绍一款轻便好用的包管理服务-----BaGet 下载并部署BaGe ...
- postgresql相关sql集锦
1.类似于oracle的listagg->string_agg SELECT area_county,)total FROM project_info GROUP BY area_county ...
- Flutter-Boxdecoration邊框線, 圓角
decoration: BoxDecoration( borderRadius: BorderRadius.circular(8), border: Border( top: BorderSide( ...