Python列表推导式,字典推导式,元组推导式
参考:https://blog.csdn.net/A_Tu_daddy/article/details/105051821

my_list = [
[[1, 2, 3], [4, 5, 6]]
]
flat = [x for sub1 in my_list for sub2 in sub1 for x in sub2]
print(flat)
# [1, 2, 3, 4, 5, 6] flat2 = [((x for x in sub2) for sub2 in sub1) for sub1 in my_list]
print(list(flat))
# [1, 2, 3, 4, 5, 6]
#个人理解:列表推导式,分析时,先把要输出的东西给放一边。然后每个for的开始到下一个for开始之前是一句(从左到右),最后再把结果放到/赋值给要输出的x即可。
元组推导式:


上图随机生成10到100之间的随机数,当i在1到10时,注意此处是元组推导式,使用小括号括起来的(列表推导式是用[]中括号括起来的),运行后生成的结果如下图示:

元组推导式和列表推导式不一样,其生成的是一个对象, 一个生成器对象,并不直接是一个元组;如果想要得到一个元组或列表的话,那么就需要通过tuple()或list()来进行转化。
e.g.:
import random
print(tuple(random.randint(10,1000) for i in range(10)))
print(list(random.randint(10,1000) for i in range(10))) 输出为:
(930, 139, 668, 598, 493, 936, 742, 763, 339, 205)
[437, 689, 372, 171, 876, 451, 336, 903, 513, 727]
上述,得到的是10到1000之间的10个随机数。
元组推导式得到的结果是一个生成器对象,并不是一个元组。
如果我们不想转换成元组或列表,但还想输出生成器中的内容,那就要使用for循环来遍历它了。
import random
yz=(random.randint(10,1000) for i in range(10))
for i in yz:
print(i,end=' ') #不换行,用空格分割 输出为: 725 10 513 74 42 683 143 997 315 795
此处注意:输出的是单个数,并不是元组;如果用默认的换行的话,输出的数更是每个一行(所以输出没有外面的括号);
此外:对于生成器对象除了可以使用for循环来遍历它,还可以使用__next__来遍历它。
import random #导入随机数模块
yz=(random.randint(10,1000) for i in range(10))
print(yz.__next__())#输出生成器中的第一个元素
print(yz.__next__())#输出生成器中的第二个元素
print(yz.__next__())#输出生成器中的第三个元素 420
709
760
继续:
import random #导入随机数模块
yz=(random.randint(10,1000) for i in range(10))
for i in yz:
print(i,end=' ')
print(tuple(yz)) 输出为:
935 51 628 73 392 442 145 694 369 173 ()
可看到,当for循环输出生成器对象中的10个元素;再次转换成元组输出,但此时生成器的内容为空了,因为:当我们对生成器对象当中的内容进行访问后,这个生成器对象已经不存在了,所以再对它进行转换后,它就是一个空的元组了;
如果希望再使用这个生成器对象,则必须重新生成。
字典推导式
参考:https://jingyan.baidu.com/article/59a015e3fcd623b695886575.html

Python列表推导式,字典推导式,元组推导式的更多相关文章
- 人生苦短之我用Python篇(列表list、字典dict、元组tuple、字符串str)
列表 创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_s ...
- [转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...
- Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...
- 转:Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
转自:http://blog.csdn.net/business122/article/details/7536991 创建列表 sample_list = ['a',1,('a','b')] Pyt ...
- python列表里的字典元素去重
去重 def list_dict_duplicate_removal(): data_list = [{"a": "123", "b": & ...
- Python列表中的字典按照该字典下的键值进行排序
列表中的字典按照该字典下的键值进行排序 这算是排序中比较复杂的一种情况吧,多重嵌套,按照某种规则进行排序.如下面这个json(注:这里这是该列表中的一个项): [ { "stat" ...
- python列表解析式,字典解析式,集合解析式和生成器
一.列表解析式(列表推倒式): 功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表. 1 lst = [1, 3, 5, 8, 10] 2 ll = [x+x for x in ls ...
- Python列表解析和字典解析
python笔记_列表解析 相比于for循环,列表解析的语法是由底层c语言实现的,它和使用for循环遍历pyobject对象相比,性能会有很大的提升. 无条件子句的列表解析式 In [2]: [2*i ...
- python \uxxxx转中文,Python列表中的字典 \uxxxx转中文,
import json a = [{u', u'roleFlag': 7}] print json.dumps(a).decode("unicode_escape") 输出结果是: ...
随机推荐
- hibernate 联合主键 composite-id
如果表使用联合主键(一个表有两个以上的主键),你可以映射类的多个属性为标识符属性.如:<composite-id>元素接受<key-property> 属性映射(单表映射)和& ...
- EMS查看邮箱容量限制的方法
以Exchange管理员身份打开EMS控制台.在PowerShell命令行提示符下,输入以下命令. Get-MailboxDatabase | FL name,IssueWarningQuota,Pr ...
- Typora 设置图片自动上传
使用 PicGo-Core(command line) 下载 PicGo-Core 依次点击 文件 -> 偏好设置 -> 图像 来到下图所示界面: 点击①位置选择 PicGo-Gore(c ...
- Django高级之-缓存
一 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消 ...
- Java学习day5
API即应用程序编程接口,Java所包含的方法以及类很多,如果要使用他们就得了解这些的API如何使用,因为API多而复杂,我们可以通过帮助文档查询 与c/c++类似,Java通过Scanner类就可以 ...
- 使用C#制作九九
效果图如下 源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...
- angular.js中指令compile与link原理剖析
在angularJs应用启动之前,它们是以HTML文本形式存在文本编辑器当中.应用启动会进行编译和链接,作用域会同HTML进行绑定.这个过程包含了两个阶段! 编译阶段 在编译的阶段,angularJs ...
- PyTorch环境配置
PyTorch环境配置 本文档用于记录PyTorch环境配置过程中的要点. PyTorch环境配置 安装Miniconda 安装PyTorch 配置远程开发工具 基于CUDA的张量 导入警告问题 参考 ...
- JS获取Cookie失败
项目开发日记-bug多多篇(1) 在做评论功能的时候遇到了一个很无厘头的错误,我的思路是参照点赞功能,用Ajax技术异步完成评论信息的传输,然后展示在页面上. 那么在提交评论信息的同时,要连着用户名, ...
- Istio实践(3)- 路由控制及多应用部署(netcore&springboot)
前言:接上一篇istio应用部署及服务间调用,本文介绍通过构建.netcore与springboot简单服务应用,实现服务间调用及相关路由控制等 1..netcore代码介绍及应用部署 新建.netc ...