当有人问你:“你会用 Python 生成列表吗?”

我想你一定会说:“当然会啊,这有什么难的。”

那人再问:“那你会列表生成式吗?”

你:“啊?好像不会。”

好的,现在我已经成功用一个巧妙地开头带入了今天的主题

那么我们今天就来说一说 Python 的列表生成式,如果您已经很熟练了,那可真棒!不会的我们继续学下去,一般来说,如果我们要用 Python 来定义一个列表,要求列表里的元素是 0~9,我们可能会选择这么做:

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

很好,这样的做法显然很聪明,但是还有更聪明的:

a = list(range(10))

这两种方法都可以满足我们的要求,但是很显然第二种更优秀,不过我相信这样的列表大家都没问题,然后我们现在有一个更无理的要求,我想要生成一个这样的列表:

[1, 4, 9, 16, 25, 36, 49, 64, 81]

这时你会怎么做呢?我先来介绍一种最基础的方法吧:

a = [] #创建一个空列表

for i in range(1, 10):

a.append(i * i) #往列表里添加元素

就是使用循环,遍历 1~9 将每个元素的平方一次存入已经创建好的空列表 a,接下来,我们今天的主角就要入场了,还记得昨天的文章里提到过的列表生成式吧

我们现在先来解决当下这个问题,最后再来回顾一下昨天的问题,现在用列表生成式来创建一个满足上诉要求的列表:

a = [i * i for i in range(1, 10)]

其实这个可以看做是将上一个方法的循环直接放在列表里进行操作,列表 a 里存放的就是 i * i,不过 i 是属于 1~9 的,这就叫列表生成式,那昨天哪个问题其实也很简单嘛,先回顾一下代码:

list = ["%d%02d" % (2019, m + 1) for m in range(12)]

这是要构建一个 2019xx 格式的日期,列表生成式是用来生成 xx 的月份元素的,即从 0~11 依次取一个数 m,然后 m + 1 就是需要的月份,好了,学会了基本的列表生成式我们现在开始进阶

我们现在又有了一个更无理的要求,我们要定义一个这样的列表:

[4, 16, 36, 64]

分析一哈,就是上一个无理要求但是只要偶数的平方嘛,那我们这个列表生成式怎么写呢?

a = [i * i for i in range(1, 10) if i % 2 == 0]

这就是在上一个列表生成式的基础上加了一个 if 判断,只取 1~9 中的偶数,现在这个要求也简单完成了,我们又提出了一个更无理的要求,我们要生成一个这样的列表:

['1A', '2B', '3C']

这个其实更好理解了,来看一下用列表生成式怎么用:

a = [x + y for x in '123' for y in 'ABC']

这个就不解释了,很简单吧,当然这样也可以用三层循环等多层循环,以上就是今天要讲的全部内容了

留个课堂作业:生成一副扑克牌的点数和花色(除大小王以外),例如:

[(2, '梅花'), (2, '方块'), (2, '红桃'), (2, '黑桃'), (3, '梅花'), ..., (A, '梅花'), (A, '方块'), (A, '红桃'), (A, '黑桃')]

答案不唯一啊

python 只取数值_Python:你会生成列表吗?-- 列表生成式相关推荐

  1. 【Python】随机划分数据集并生成VOC格式列表

    1.Introduction 做目标检测时,用LabelImg生成的 xml 文件需要和对应的图片文件名,生成VOC格式列表.同时需要按照一定比例划分为训练集.验证集和测试集. 2.Materials ...

  2. python进行谱曲_python进行曲——迭代生成

    迭代器 - 概念 可迭代协议 : 内部含有__iter__方法的值/变量都是可迭代的 通过可迭代变成迭代器 : 可迭代变量.__iter__()返回一个迭代器 迭代器协议 : 内部含有__iter__ ...

  3. python绘制梅花_Python | 巧用生成表达式、让循环显得高大上 !

    Python资源共享群:626017123 在 Python 中使用生成表达式,有以下三点好处: 1. 提高代码运行速度 2. 简化代码,使代码显得更精炼 3. (重点)是你的代码看上去像" ...

  4. python随机奇数_python怎么随机生成奇数

    python随机生成奇数的方法: 实现思路: 1.需要用到random模块 2.用列表展现给用户 3.检查这个数是否为奇数,在用append的方法将为奇数的随机数写入列表中 4.为了保证能输入与用户输 ...

  5. 浙大python读者验证码_Python实现简单生成验证码功能【基于random模块】

    本文实例讲述了Python实现简单生成验证码功能.分享给大家供大家参考,具体如下: 验证码一般用来验证登陆.交易等行为,减少对端为机器操作的概率,python中可以使用random模块,char()内 ...

  6. python内存分配_Python进阶2-元组和列表的内存分配机制

    本系列文章是一系列学习笔记,希望较为深入地分析Python3中的原理.性能,文章中绝大部分观点都是原作作者的观点(如下),本人对书中示例加以实践和总结,并结合相应的Python的C语言源码(3.6.1 ...

  7. python批量生成图片_python图像处理-批量生成纯色图片

    前言 本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑.如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过. 上一 ...

  8. python list合并_python中如何合并两个列表

    python合并列表的方法如下: 方法一 最原始,最笨的方法,分别从两个列表中取出所有的元素,再放入新列表中就OK了.示例代码如下:list1 = [1,2,3] list2 = [4,5,6] li ...

  9. python 只取数值_快收藏!Python常用操作运算符,都在这了!(下)

    泰迪学院-Python基础 公众号ID:taidixueyuan 还未阅读第一篇的小可爱,在这里可以直接跳转 快收藏!Python常用操作运算符,都在这了!(上) 5. 逻辑运算符 逻辑运算符包含an ...

最新文章

  1. 2021年诺贝尔经济学奖评述:解决重大社会问题的自然实验因果框架
  2. vb.net写一个简易的RSS阅读器
  3. springboot 定制个性 banner
  4. jQuery+php+ajax实现无刷新上传文件功能
  5. 电脑版企业微信_企业微信教育版功能更新啦!
  6. Mybatis Xml 传入动态字段 排序
  7. Spring Boot下无法加载主类 org.apache.maven.wrapper.MavenWrapperMain问题解决
  8. 修改el-popover和el-select样式
  9. React Native 宣布重构计划!
  10. 调整窗口大小时进行页面刷新(设定定时器)
  11. 本周4天4场直播,解决你对Oracle的种种疑惑,还有第2期大咖讲坛讨论敏捷开发中的性能质量管控...
  12. 方维分享系统,品牌无法设置分类关联
  13. Java实现redis管道
  14. 嵌入式语音识别系统是什么
  15. Windows基本磁盘结构简析(二)——MBR结构分析
  16. Install/Remove of the Service Denied
  17. 怎么清理C盘释放空间 ?
  18. 发光强度、亮度、光照度,这些不常见的单位傻傻分不清?
  19. 小说形象特征包括哪些方面_小说的基本特征是塑造人物形象
  20. firebase 推送_使用Firebase Cloud Messaging发送推送通知

热门文章

  1. python 列表(list)操作及函数
  2. html禁止文本选择,[译]用CSS来禁止文本选择
  3. 开户oracle监听,R12:银行账户开户人?
  4. 为什么ubuntu64位下C语言for循环不能超过2147483647次?(size_t )
  5. web前端入门学习 css(9)广义的html5 品优购项目(html+css基础完结,js开始,移动端布局开始)
  6. python PyQt5.QtWidgets.QWidget.mouseMoveEvent()函数
  7. C++ 栈和堆上建立对象的区别
  8. 机器学习中的训练与损失 test and loss (训练loss不下降原因集合)
  9. python sklearn.model_selection.ShuffleSplit()函数的用法
  10. python numpy.arange() 函数的使用方法 (在给定间隔内返回均匀间隔的值)